比如 select a.a1 a.a2 from A a  inner join B b on b.aid=a.id where b.b1='bn1'

select a.a1,a.a2 from A a ,B b where b.aid=a.id and b.b1='bn1'以上两个语句哪个效率高些呢?
特别是当查询条件多的时候,哪个查询效率高些呢?

解决方案 »

  1.   

    应该是一样的
    你explain一下看看执行计划
      

  2.   

    如果索引情况相同,效率相同,SQL标准不同,写法不同
    EXPLAIN SQL语句,看看结果
      

  3.   


    一样!MYSQL会进行优化,这样 from A a  inner join B b on b.aid=a.id 就等同于 from A a ,B b where b.aid=a.id
      

  4.   


    如果索引情况相同,效率相同,SQL标准不同,写法不同
    EXPLAIN SQL语句,看看结果
      

  5.   

    那其他数据库呢?比如,sqlserver、oracle等,会进行优化吗?
      

  6.   


    因为inner join是后来的sql标准才开始支持的。
    大部分DBMS都会将这两种sql写法翻译成同一种sql。所以,基本上效率是一样的。
    打个比方,oracle以前使用(+)来表示外连接,后来又有了标准的left outer join和right outer join,两种写法,最终在内部都是一个sql语句。效率基本上是一样的。
      

  7.   

    基本上成熟的数据库都会进行优化。 你提到的这两种SQL SERVER, ORACLE都是成熟的商业产品。
      

  8.   

    如果想详细了解数据库SELECT语句优化,建议参考MYSQL官方免费手册中如下。 虽然是MYSQL的但基本上其它数据库也是同样的优化原则。
      

  9.   

    试了一下,小数据量时,
     select a.a1 a.a2 from A a inner join B b on b.aid=a.id where b.b1='bn1'
    效率高一些