日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql sever 中如何查看某个表的索引_查看执行计划:explain的type

發布時間:2024/9/19 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql sever 中如何查看某个表的索引_查看执行计划:explain的type 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

type顯示訪問類型,較為重要。通過它可以了解我們的SQL語句是否優化過、是否達到最佳的效果。

它的值有很多,從最好到最差比較如下:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

以下幾個是常見的(從最好到最差):

system > const > eq_ref > ref > range > index > All

一般而言,我們要保證查詢至少達到ranag級別,最好能到達到ref。

分別了解一下幾個常見的值的涵義。

system

只有一行記錄,這種情況平時一般不會出現,可以忽略。

const

表示通過索引一次就找到了,用于比較主鍵或唯一鍵索引。因為只匹配一行數據,所以很快。比如將主鍵置于where列表中,MySQL就能將該查詢轉換為一個常量。

如:explain select * from (select * from emp where id = 1)x;

FROM后的子查詢,所以select_type為DERIVED,第2行結果的id值較大,所以優先執行。emp表中id是主鍵,id=1即只匹配一行數據,所以type的值為const。同時,外層查詢從臨時表x中查詢全部,由于x中只有一行數據,所以type值是system。

eq_ref

唯一性索引掃描,對于每個索引鍵,表中只有一條記錄與之匹配。常見于主鍵或唯一鍵索引掃描。type的值是eq_ref的查詢中用到了索引,但查詢只有一條記錄匹配。

用兩個表簡單測試

test1表:

test2表

有以下SQL:

explain select * from test1 t1 ,test2 t2 where t1.id = t2.id;

看其執行計劃

t2的type值是ALL,即全表搜索,t1為eq_ref。兩表id字段為主鍵,t1.id=t2.id條件下只一行數據是符合的。

ref

非唯一性索引掃描,返回匹配某個單獨值的所有行。本質上也是一種索引訪問,它返回所有匹配某個單獨值的行,然而,它可能會得到多個符合條件的行,所以它應該屬于查找和掃描的混合體。

實例

emp表的數據

在這個表上用job和deptNo字段創建一個復合索引

mysql> create index index1 on emp(job,deptNo);Query OK, 10 rows affected (0.59 sec)

現在要查找deptNo=1的數據(deptNo和job是復合索引,但只使用了一半)

返回了兩行,再看一下執行計劃:

匹配deptNo=1的值的結果有兩行。

現在把索引刪除

drop index index1 on emp;

假設emp表的deptNo是test2的id。有以下sql

select * from emp e , test2 t2 where e.deptNo = t2.id;

我們知道結果有兩行,其執行計劃如下:

emp表的查詢type是ref,因為test2表只有一行數據,所有就類似于匹配detpNo的單獨的值行。

rang

只搜索給定范圍的行。一般就是你在where語句中出現between、、in等查詢這種范圍掃描,比全表掃描要好,因為它只需要開始于索引的某一個點,而結束另一點,不用掃描全部索引。如以下SQL

select * from emp where id in (1,2);

能夠達到rang已經可以了。

index和ALL

index和ALL都是讀全表,兩者區別在于index類型只遍歷索引樹,通常比ALL快。

如以下兩條SQL:

select id from emp;

select id ,ename from emp;

explain查看如下:

若SQL能達不到rang或以上的話,能達到index也可以。

關于type介紹到此,主要是要了解它的值所代表的涵義,好壞的排列,那我們就可以知道SQL的優劣,以及優化是否有效果。

總結

以上是生活随笔為你收集整理的sql sever 中如何查看某个表的索引_查看执行计划:explain的type的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。