在查看執(zhí)行計(jì)劃或調(diào)優(yōu)過程中,執(zhí)行計(jì)劃里面有些現(xiàn)象總會(huì)讓人有些疑惑不解:
1:為什么同一條SQL語句有時(shí)候會(huì)走索引查找,有時(shí)候SQL腳本又不走索引查找,反而走全表掃描?
2:同一條SQL語句,查詢條件的取值不同,它的執(zhí)行計(jì)劃會(huì)一致嗎?
3: 同一條SQL語句,其執(zhí)行計(jì)劃會(huì)變化,為什么
4: 在查詢條件的某個(gè)或幾個(gè)字段上創(chuàng)建了索引,執(zhí)行計(jì)劃就一定會(huì)走該索引嗎?
5:同時(shí)存在幾個(gè)索引,SQL語句會(huì)走那個(gè)索引?
............................................................
有時(shí)候如果要跟別人解釋清楚這些問題,如果不通過一些案例或例子來解說,很難闡述清楚,一方面是表達(dá)能力問題。另外一方面,再華麗的語言也難敵眼見為實(shí),畢竟人接受信息大部分通過眼睛,小部分通過耳朵。眼見為實(shí)耳聽為虛嗎!
下面來看一個(gè)簡(jiǎn)單的例子,為什么我在對(duì)應(yīng)的查詢字段上建有索引,但是它不走索引反而走全表掃描。
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
新聞熱點(diǎn)
疑難解答
圖片精選