使用索引优化数据库查询效率
2010-09-27 15:34
627 查看
-- -使用索引优化数据库查询效率 1 .不宜创建索引的情形 ( 1 )经常插入,修改和删除的表 ( 2 )数据量比较小的表,因为查询优化器在搜索索引时所花费的时间可能会大于遍历全表的数据所需要的时间 2 .适合创建索引的情形 ( 1 )为where子句中出现的列创建索引 ( 2 )创建组合索引 ( 3 )为group by 子句中出现的列创建索引 3 .聚集索引的设计原则 ( 1 )该列的数值是唯一的或者很少有重复的记录 ( 2 )经常使用between ... and ..按顺序查询的列 ( 3 )定义identity的唯一列. ( 4 )经常用于对数据进行排序的列. -- -无法使用索引的select语句 1 .对索引列使用了函数,如: select * from tb where max (id) = 100 2 .对索引列使用了 ' %xx ' ,如: select * from tb where id like ' %1 ' 需要注意的不是所有使用like关键字的select 语句都无法使用索引,比如 select * from tb where id like ' 1% ' 就可以使用索引 3 .在where子句中对列进行类型转换(其实也是使用到了函数) 4 .在组合索引的第1列不是使用最多的列,如在下面3个查询语句中建立组合索引,按顺序包含col2,col1,id列; select * from tb where id = ' 1 ' and col1 = ' aa ' select id, sum (col1) from tb group by id select * from tb where id = ' 2 ' and col2 = ' bb ' 则第一句和第二句无法使用到索引 所以需要注意组合索引的顺序 5 .在where 子句中使用in关键字的某些句子 当在in关键字后面使用嵌套的select语句,将无法使用在该列上定义的索引 如: select * from ta where id in ( select id from tb where ....) -- 这样可以用到索引 select * from tb where id in ( ' 1 ' , ' 2 ' ) 本文来自CSDN博客,转载请标明出处:http: // blog.csdn.net / fredrickhu / archive / 2010 / 01 / 12 / 5183068 .aspx
相关文章推荐
- 数据库查询优化之索引的使用详解
- mysql使用索引优化查询效率
- 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率
- 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率
- 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率
- 使用索引统计信息(Index Statistics)优化查询语句,提高查询效率
- 使用索引统计信息(Index Statistics)优化查询语句,提高查询效率
- 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率
- 数据库查询的优化——索引使用的注意点
- 数据库性能优化(强制使用索引查询)
- mysql的优化(表的设计,优化步骤,四种索引,分析慢查询,使用索引的深入解析,存储引擎分析,表的分割,数据库配置)
- 数据库查询的优化——索引使用的注意点(转)
- 数据库查询优化之索引的使用详解
- 数据库查询性能优化(合理使用索引|避免或简化排序|避免对大型表进行全表顺序扫描|避免使用相关的子查询|避免使用通配符匹配 )
- 注意使用 BTREE 复合索引各字段的 ASC/DESC 以优化 order by 查询效率
- mysql使用索引优化查询效率
- 数据库查询优化之索引的使用详解
- 四、优化数据库,将不同功能的表分别建立在不同的库中,尽量避免表的联合查询,重视索引
- oracle 性能优化操作七:索引提高数据分布不均匀时查询效率
- MySQL查询优化技术系列讲座之使用索引