首页 新闻 会员 周边

假设一个数据表中有4到5个索引,在执行查询语句的时候,数据库怎么筛选需要用到的索引的呢,请问一下有什么规律

0
悬赏园豆:30 [已解决问题] 解决于 2019-05-21 10:19

我要进行select语句的时候,想知道select * 和select 字段的时候,
看到了执行命令的返回的时候 , 看到的选择的索引方式有不同,
但是不是很懂里面的原理。

如果有一个索引的包含列 又是包括全部的字段,不论我用select * 和还是select 字段

,我发现它只会用这个索引来查 找数据,为什么呢

sqlserver怎么知道使用索引的规律呢

哎上的主页 哎上 | 初学一级 | 园豆:181
提问于:2019-05-20 16:40
< >
分享
最佳答案
0

如果索引包含了所 SELECT 的字段,就直接从索引中取数据;如果不包含,则从聚集索引取数据。

参考博文:SQL SERVER大话存储结构(4)_复合索引与包含索引

收获园豆:30
dudu | 高人七级 |园豆:31007 | 2019-05-20 17:37
其他回答(3)
0

选用什么索引,这跟很多因素有关。其中很重要的一点是要让where条件里面的列能够使用索引。

AYard | 园豆:436 (菜鸟二级) | 2019-05-21 09:38

确实跟where这个索引有关系,还跟索引的字段也有关系,如果索引的字段多,而非聚集索引又找不到这么多的话,就会用主键聚集索引来扫描这个表

支持(0) 反对(0) 哎上 | 园豆:181 (初学一级) | 2019-05-21 10:23
0

不过可以强制使用索引的方式来让数据库引擎选用你指定的索引!

iceWang丶 | 园豆:202 (菜鸟二级) | 2019-05-21 12:23

我知道可以强制使用指定索引,但是B树查找就不是最优了

支持(0) 反对(0) 哎上 | 园豆:181 (初学一级) | 2019-05-23 08:47
0

1、建议楼主熟悉索引机制,因为各个关系库 的索引机制也会有所不同,所以,不能一概而论;
2、是否使用索引,以及使用哪个索引,和多个因素相关,比如:表数据量,索引列的数据分布,索引的列,SQL的where条件等。

lhdz_bj | 园豆:227 (菜鸟二级) | 2019-10-02 16:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册