跪求高手给出MySQL优化方案,7万多条查询很慢,查询代码如下,感激不尽

查询代码如下
1、语句一
SELECT id,classid,linkurl,title,picurl,description FROM `newslist` WHERE delstate='' AND checkinfo=true ORDER BY posttime DESC
2、语句一
SELECT id,classid,linkurl,title FROM `newslist` WHERE flag LIKE '%h%' AND delstate='' AND checkinfo=true ORDER BY posttime DESC
3、语句三
$sql = "SELECT id,classid,linkurl,title,picurl,description,posttime FROM `newslist` WHERE 1=1 ";
if(!empty($classid))
{
$sql .= " AND (classid=$classid OR parentstr LIKE '%,$classid,%')";
}
if(!empty($keyword))
{
$keyword = htmlspecialchars($keyword);
$sql .= " AND (title LIKE '%$keyword%' or description LIKE '%$keyword%' or tags LIKE '%$keyword%')";
}
$sql .= " AND delstate='' AND checkinfo=true ORDER BY id DESC,posttime DESC";

他用的是一个mysql的类,也就是说将mysql的操作封装在一个类中。因为如果你直接使用php的函数来操作数据库的话,可能会比较繁琐,而且不够直观,这样封装成类会比较直观。
其实你只需要了解如何调用以及这个类中的每个方法的用途和用法即可。
首先是这几句:
include 'mysql.php';//将mysql类包含进来,也就是下面的那一大堆
$server="localhost";//服务器地址
$user="用户名";//mysql用户名
$psw="密码";//mysql密码
$database="数据库";//你要操作的数据库
$db = new Mysql();//实例化Mysql类
$db->connect($server, $user, $psw, $database);//创建数据库连接,这已经开始使用mysql类的方法了
unset($server, $user, $psw, $database);//释放上面的变量,用意是减少系统开销

而至于下面说到的mysql类,你无需知道每一句都是什么意思,你只要知道那些方法怎么使用就行了。
比如query(),这个就是用来执行sql语句,比如:
$sql = "SELECT * FROM table WHERE id=1";
$db->query($sql);
这样就会执行这条sql语句。
当然,这样的返回值是不直观的,如果想要简单地处理SELECT结果,可以使用fetchAll()、fetchOne()、fetchRow()、fetchArray()这些。顾名思义,fetchAll一般是返回二维数组,一般用于多行的查询结果。fetchOne一般是返回一维数组,一般用于单行的查询结果。其他的就需要你实际测试一下。
当然,还有update、delete这两个方法,这两个可以让你不用自己写sql语句,直接给相应的参数即可以做到更新或删除——因为sql语句也封装在这两个方法里面了。

其实这样的php的mysql类还有很多,比较好的一个是ezSQL,你可以去搞下来看看,使用起来很方便。
温馨提示:答案为网友推荐,仅供参考
相似回答