您的位置:首页 > 数据库

使用索引优化数据库查询效率

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐