第七章 SQL优化
- 数值的对比要比字符串快, 以后建表时, 能用数值代替的, 尽量不要使用字符串
- 数值比较节省空间
- 给列做索引 , 索引可以大大的加强查询速度
- 联合索引 , 给 A B两列做联合索引, where A = ? a =? and b = ?
- 索引会加重数据库负担
1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描
- (in 可以使用索引)
6.应尽量避免在 where 子句中对字段进行表达式操作
7.应尽量避免在where子句中对字段进行函数操作
8.很多时候用 exists 代替 in 是一个好的选择
- 当从表中的数据很少的时候,使用 in , 如果从表中的数据比较多, 那么使用exists
9.尽量使用数字型字段
10.尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间
11.任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。
12.尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。
13.避免频繁创建和删除临时表,以减少系统表资源的消耗。
14.在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。
总结 :
能使用索引(排序,二分查找),效率高
大量的临时表,大数据的临时表加重内存的负担, 不如直接建议实体表
尽量不要使用 * ,以便于养成好的习惯
尽量使用数值型的字段