首页 > 数据库 > SQL Server > 正文

浅析SQL SERVER执行计划中的各类怪相

2024-08-31 00:55:34
字体:
来源:转载
供稿:网友
浅析SQL SERVER执行计划中的各类怪相 2014-07-11 15:30 by 潇湘隐者, ... 阅读, ... 评论, 收藏, 编辑

在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解:

1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描?

2:同一条SQL语句,查询条件的取值不同,它的执行计划会一致吗?

3: 同一条SQL语句,其执行计划会变化,为什么

4: 在查询条件的某个或几个字段上创建了索引,执行计划就一定会走该索引吗?

5:同时存在几个索引,SQL语句会走那个索引?

............................................................

有时候如果要跟别人解释清楚这些问题,如果不通过一些案例或例子来解说,很难阐述清楚,一方面是表达能力问题。另外一方面,再华丽的语言也难敌眼见为实,毕竟人接受信息大部分通过眼睛,小部分通过耳朵。眼见为实耳听为虚吗!

下面来看一个简单的例子,为什么我在对应的查询字段上建有索引,但是它不走索引反而走全表扫描。

DROP TABLE TEST 
   CREATE TABLE TEST (OBJECT_ID  INT, NAME VARCHAR(8));
   CREATE INDEX PK_TEST ON TEST(OBJECT_ID) 
   DECLARE @Index INT =0;
WHILE @Index < 20
BEGIN
    INSERT INTO TEST
    SELECT @Index, 'kerry';
    
    SET @Index = @Index +1;
END
UPDATE STATISTICS TEST WITH FULLSCAN
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表