查询出来的結果一样, 有什么不同之处, 
select a.id, b.name from a inner join b on a.id = b.id where a.id = 1 ;select a.id, b.name from a inner join b on a.id = b.id and a.id = 1 ;后一个是where 一个是 and 它们效率如何 ?

解决方案 »

  1.   

    where 是两个表中的数据满足共同条件才会显示。
    on 相同条件匹配。因此结果肯定不一样。on显示的内容>=where条件显示的内容
      

  2.   


    select a.id, b.name from a inner join b on a.id = b.id where a.id = 1 ;--先连接所有,再选择
    明显的有两次数据遍历,效率不如下面:select a.id, b.name from a inner join b on a.id = b.id and a.id = 1 ;--连接所有符合条件的
      

  3.   

    一样。这个语句的几种表现形式。select a.id, b.name from a inner join b on a.id = b.id where a.id = 1;
    select a.id, b.name from a inner join b on a.id = b.id and a.id = 1;
    select a.id, b.name from a ,b where a.id = b.id and a.id = 1;对MYSQL来说在优化后都一样
      

  4.   


    这样的话,到是建议你读一下这些相关内容。
    http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#query-speed
    7.2. 优化SELECT语句和其它查询
    7.2.1. EXPLAIN语法(获取SELECT相关信息)
    7.2.2. 估计查询性能
    7.2.3. SELECT查询的速度
    7.2.4. MySQL怎样优化WHERE子句
    7.2.5. 范围优化
    7.2.6. 索引合并优化
    7.2.7. MySQL如何优化IS NULL
    7.2.8. MySQL如何优化DISTINCT
    7.2.9. MySQL如何优化LEFT JOIN和RIGHT JOIN
    7.2.10. MySQL如何优化嵌套Join
    7.2.11. MySQL如何简化外部联合
    7.2.12. MySQL如何优化ORDER BY
    7.2.13. MySQL如何优化GROUP BY
    7.2.14. MySQL如何优化LIMIT
    7.2.15. 如何避免表扫描
    7.2.16. INSERT语句的速度
    7.2.17. UPDATE语句的速度
    7.2.18. DELETE语句的速度
    7.2.19. 其它优化技巧
      

  5.   


    你可以自己用脚本生成两个 10万条记录的表,然后进行相关测试。如何生成表和记录,这儿有例子。
    http://topic.csdn.net/u/20090626/16/65f043cf-b9d9-4707-b660-9857461177f4.html