oracle sql优化的原则是能把用到索引条件写到sql语句最后面,听人说mysql刚好相反!!我这没装mysql 请教了,mysql跟oracle一样 还是相反?谢谢!!!

解决方案 »

  1.   

    MySQL前后都无关,它自己会选择它认为最优的方案。
      

  2.   

    谢谢!那意思是这是与oracle的不同了哦 意思是mysql除了对函数的优化 条件顺序就没用了哈!
      

  3.   

    你EXPLAIN一下SQL语句,看看结果就知道了嘛
      

  4.   

    顺序是很重要的,要把经常查询的列,类型小的(如int 就比string小),放在前面
      

  5.   

    那意思是跟oracle相反了?
    谢谢!我对mysql不大熟悉 虽然sql都差不多写法!但从效率来讲 就不知道了!
      

  6.   

    顺序是很重要的,要把经常查询的列,类型小的(如int 就比string小),放在前面 不需要,MySQL会自己按照自己的思路自说自画的帮你优化的。虽然有时的结果并不理想。
      

  7.   


    前辈,你说数据库表的列的顺序对查询有影响吗?
    我想大部分人都会说,没有影响
    可是我的执行计划里显示出,一个相同的表如果把 经常查询的列,类型小的(如int 就比string小),放在前面,把类型大的列放在表的后面(是指建表语句),查询时间上会有很大差别(我靠!这个问题害的我重建了n个表!!!) 
      

  8.   

    这个倒没注意过。我倒是经常explain看到MySQL根本不按照设定的思路来进行优化。理论上MySQL应该按照各表中可能的行数来把返回行数少的优先执行。但结果上很多时候,不管你放前,放后,它都去找那个大的。 即使 analyze table也没起什么作用。
      

  9.   

    如果真有兴趣研究,可以看一下MySQL的官方文档介绍。虽然看起来比较头晕。http://dev.mysql.com/doc/refman/5.1/zh/optimization.html
    第7章:优化7.1. 优化概述
    7.1.1. MySQL设计局限与折衷
    7.1.2. 为可移植性设计应用程序
    7.1.3. 我们已将MySQL用在何处?
    7.1.4. MySQL基准套件
    7.1.5. 使用自己的基准
    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. 其它优化技巧
    
      

  10.   

    前后都无关!
    楼上说的官方文档是必须看的,虽然看起来可能有点累。
    另外,应该看看这篇总结性的文章:
    84个MySQL性能优化的首选技巧