我想查询符合 field1 或者field2 或者field3 里有文字books,并且field4 或者field5 或者field6 里有文字english,结果按照时间倒序,限制条数为30。
我使用PHP
这样的 MYSQL QUERY语句正确吗?求一个效率高一点的语句。谢谢
table:
id | date       | field1   | field2    | field3 | field4   | field5   | field6
1  | 1298617011 | textbook | newspaper |        |  chinese | Japanese | english 
2  | 1298618005 | books    |           |        |  chinese | french   | field1 
3  | 1298618083 | newspaper| magazine  | books  |  english |          | ... 
$result = mysql_query("SELECT * FROM table WHERE (field1 = 'books' OR field2 = 'books'OR field3 = 'books') and (field4 = 'english' OR field5 = 'english' OR field6 = 'english') Order By date DESC LIMIT 30");  

解决方案 »

  1.   

    $result = mysql_query("SELECT * FROM table WHERE (field1 = 'books' OR field2 = 'books'OR field3 = 'books') and (field4 = 'english' OR field5 = 'english' OR field6 = 'english') Order By date DESC LIMIT 30");  从SQL语句本身来说,没什么可优化的了。这个已经是最好的了。最多是在你的这些字段上分别加上索引。
      

  2.   

    create index xxx1 on table1 (field1);先读三遍《数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念) 然后再粗略浏览一遍MYSQL的官方手册。(方便以后查找,避免类似于考试的时候,给你本政治书也不知道答案在第几章,第几页)MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html