参考链接1:http://blog.sina.com.cn/s/blog_6c0541d50102wxen.html
1.字段类型选择:能使用数字类型时,尽量不使用字符类型,因为数字查询更快,消耗的存储资源更少;
字段字数波动不大的情况,使用char而不是varchar,因为char消耗固定的存储空间,但是查询快,varchar相对更省空间;
2.查询时:尽量少使用*通配符,如不需要表中所有字段信息,尽量列出所有需要的列名来查询;
如果判断条件有索引,将索引放在第一个查询条件,特别是聚集索引,可以极大程度的提高查询效率。
3.导致索引无效的情况:
where中使用null、<>、!=、or、in、not in等情况均会导致索引失效从而变成全表扫描。
另外,where子句中对字段进行表达式操作(如:where money/2=100)或函数操作。
4.使用exist、not exist来代替in和not in可以提高查询效率。
5.建临时表时,如果数据量大,可以考虑使用select into代替普通的create table+insert,可以提高速度,但是select into会导致表锁定,所以需视情况选择方案。
6.其他提高查询效率的方案:多表联查,可关联的字段尽量都使用上; 能用distinct就别用过group by;
7.索引:聚合索引(簇索引),一张表只能有一个,表的存储顺序就是索引的顺序,能极高效的提高查询效率。
非聚集索引(非簇索引),可多个,表的存储顺序跟索引顺序无关。
虽然大多数情况下会将唯一约束索引和主键放在一起,但并不能最大化的利用聚集索引的优点,聚集索引应考虑建在最常使用的查询条件的字段上面。