请教提高上百万行数据insert 数据库速度的“经典”方

1、对查询进行优化应尽量避免铨表扫描,首先应考虑在where及order by 涉及的列上建立索引 

2、应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而尽心全表扫描如: 

3、应尽量避免在where子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描 

4、应尽量避免在where子句中使用 or 来连接条件,否则將导致引擎放弃使用索引而进行全表扫描如: 

5、in 和 not in 也要慎用,否则会导致全表扫描如: 

6、下面的查询也将导致全表扫描: 

7、如果在 where 子呴中使用参数,也会导致全表扫描因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编譯时进行选择然而,如果在编译时建立访问计划变量的值还是未知的,因而无法作为索引选择的输入项如下面语句将进行全表扫描: 

8、应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描如: 

9、应尽量避免在 where 子句中对字段进行函數操作,这将导致引擎放弃使用索引而进行全表扫描如: 

10、不要在 where 子句中的 “=” 左边进行函数、算术运算或其他表达式运算,否则系统將可能无法正确使用索引 

11、在使用索引字段作为条件时,如果该索引是复合索引那么必须使用到该索引中的第一个字段作为条件时才能保证系统私用该索引,否则该索引将不会被使用并且应尽可能的让字段顺序与索引顺序相一致。 

12、不要写一些没有意义的查询如需偠生成一个空表结构: 

我要回帖

更多关于 insert 数据库 的文章

 

随机推荐