两个表,一是类别表,内有类ID和类别名,另一是文章表,现要查一ID为7的文章的类名和题目,时间,内容
SELECT a.dk_name,b.dia_title,b.dia_time, b.dia_content from (select * from diary where dia_id=7) b inner join dia_kind a on a.dk_id=b.dia_dk_idSELECT a.dk_name,b.dia_title,b.dia_time, b.dia_content from (select * from diary where dia_id=7) b , dia_kind a where a.dk_id=b.dia_dk_idSELECT a.dk_name,b.dia_title,b.dia_time, b.dia_content from diary b inner join dia_kind a on a.dk_id=b.dia_dk_id where b.dia_id=7请问哪种查询好些,或还有更好吗

解决方案 »

  1.   

    查询优化的方法有很多,抛开一切单从SQL语句来说应该是第一条更好些
    还有一种方法楼主自己可以测试,就是用desc SQL语句 来查看一下相关字段数值来判断语句的执行效率,具体可google一下
      

  2.   

    SELECT a.dk_name,b.dia_title,b.dia_time, b.dia_content from diary b inner join dia_kind a on a.dk_id=b.dia_dk_id where b.dia_id=7
    如在连接字段上建立索引,上述SQL语句应该是最快的
      

  3.   


    第三种比较快,但要看你表中数据记录的具体情况,有时第一种反而会快。
    你可以具体试一下,另外用EXPLAIN可以看一下执行计划。mySQL 官方参考手册
    http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   

    explain 一下
    看执行计划
      

  5.   

    SELECT a.dk_name,b.dia_title,b.dia_time, b.dia_content from diary b inner join dia_kind a on a.dk_id=b.dia_dk_id where b.dia_id=7 
    最好,上面2句等同于左联接。SELECT a.dk_name,b.dia_title,b.dia_time, b.dia_content from diary b inner join dia_kind a on a.dk_id=b.dia_dk_id and b.dia_id=7 这样写也可以。
    如2楼所说,还要看索引。