本篇博文只測試where謂詞對multi-column index使用的影響,主要篇幅是sql**+截圖。詳細內容請參考《inside the sql server query optimizer 》--benjamin nevarez,chapter 4:index selection-->the mechanics of index selection(page124).
1--利用adventureworks.sales.salesorderdetail 建立臨時表
2select
*into
dbo.salesorderdetail
3from
sales.salesorderdetail4--
執行下面語句檢視執行計畫
5select productid,salesorderid,salesorderdetailid from dbo.salesorderdetail --
table scan6--
建立復合索引
7create
index multi_column on
dbo.salesorderdetail(productid,salesorderid)8--
分別執行在索引第一列、第二列的 where條件查詢
--分別執行在索引第一列、第二列的 where條件查詢
索引第一列為『=』,第二列沒含操作表示式,則兩列都可以用 seek,與where 後面的順序無關
索引第一列為『=』,第二列有操作表示式 (abs,upper,convert...),則第一列seek,第二列 scan,與where 後面的順序無關
索引第一列不是『=』,則第一列 seek,第二列scan ,與where後面的順序無關
1drop
table dbo.salesorderdetail --
刪除測試表
mysql 索引長度對索引的影響
1 查詢頻繁 2 區分度高 3 長度小 4 盡量能覆蓋常用查詢欄位.1 索引長度直接影響索引檔案的大小,影響增刪改的速度,並間接影響查詢速度 占用記憶體多 針對列中的值,從左往右擷取部分,來建索引 1 截的越短,重複度越高,區分度越小,索引效果越不好 2 截的越長,重複度越低,區分度越高,索引效果越...
索引對查詢效率的影響
我們將利用advanturewords2008r2中的sales.salesorderdetail表,其中有12萬條資料,非常適合用於測試。不過我們不直接在這張表上做測試,因為這張表上已經有索引了。我們需要新建一張表,將該表中的資料匯入我們新建的test和test2表。test和test2的建立方法...
索引字段順序對效率的影響
個人總結幾點 1 驅動表中的索引要將區間字段 sendtime之類 放到固定值 orgid等 的後面 2 驅動表的連線字段可以放在索引最後,以避免讀取rowid 3 連線表的連線欄位要放在索引最前面。舉個例子 select count as col 0 0 from rec bankinstruct...