1、减少访问数据库的次数
2、WHERE子句中的连接顺序   自下而上
3、用EXISTS替代IN /用NOT EXISTS替代NOT IN]
4、用索引提高效率
5. SELECT子句中避免使用*
6. 计算记录条数
7. 用WHERE子句替换HAVING子句
8. 使用表的别名(Alias)
9. 用EXISTS替代IN
10. 用表连接替换EXISTS
11. 用EXISTS替换DISTINCT这是写高效SQL的几个注意点,楼主自己根据这个比较一下就知道了

解决方案 »

  1.   

    你这两个语句都有很大的毛病:
    前提是你的datatime字段已经建了索引,这是最基本的优化方法先说第一个:datatime like '%2004-03-11 10:%')),在like中如果前面有%,则不会使用索引,在你的这个sql中,我看不出前面有使用%的必要.第二个substr(datatime,1,13)='2004-03-11 10')),在datatime上使用函数,也将导致不能使用索引,如果你依然希望使用这样的写法,那么请加函数索引。最后,偶觉得你的sql写的很奇怪啊,你三张表怎么没有任何连接语句阿,不会吧,这样出来的笛卡尔乘积的结果难道是你想要的吗????