1)只返回需要的数据
a)不要写SELECT*的语句
b)合理写WHERE子句,不要写没有WHERE的SQL语句。
2)尽量少做重复的工作
可以合并一些sql语句
3)适当建立索引(不是越多越好)但以下几点会进行全表扫描
a)左模糊查询’%...’
b)使用了不等操作符!=
c)Or使用不当,or两边都必须有索引才行
d)In、notin
e)Where子句对字段进行表达式操作
f)对于创建的复合索引(从最左边开始组合),查询条件用到的列必须从左边开始不能间隔。否则无效,复合索引的结构与电话簿类似
g)全文索引:当于对文件建立了一个以词库为目录的索引(文件大全文索引比模糊匹配效果好)
能在char、varchar、text类型的列上面创建全文索引
MySQL5.6Innodb引擎也能进行全文索引
搜索语法:MATCH(列名1,列名2,…)AGAINST(搜索字符串[搜索修饰符])
如果列类型是字符串,但在查询时把一个数值型常量赋值给了一个字符型的列名name,那么虽然在name列上有索引,但是也没有用到。
4)使用join代替子查询
5)使用union代替手动创建临时表