[SQL ] 索引跟where

作者: wind681201 (阿風~~)   2018-07-21 11:48:48
資料庫名稱:MS-SQL
資料庫版本:2016
內容/問題
各位大大,我的想法是這樣,舉個例子,我有100筆資料,我先用時間篩選成50筆資料
再從這50筆資料,選10筆資料。
在where 的條件中,能這樣子嗎?因為,我的資料庫中,有很多索引,我想利用這些索引
我的想法跟上面的很像,就是,100筆資料,用索引A選出50筆,再用這50筆用索引B選出
10筆,但是,我看執行計畫,好像不是這樣。
但是,因為where條件,不會固定,又不能依某個條件建立索引。
請問我的想法有錯嗎?還是有什麼方法能解決?
若依我的想法,我有用過table變數什麼的,但這又遇到了,inser效能的問題,
所以,才會想能否用我上述的想法達成。
作者: retsamsu   2018-07-23 11:43:00
這個 Query 跟 Index 的學問很深,通常要調整效能跟設計的走向會很有關係。你可以強迫 Query 的時候用你要的 Index,但效能可能不是你想要的
作者: iFEELing (ing)   2018-07-23 22:21:00
讓資料庫幫你決定比較好索引一次是打全表的 你用索引A選了之後 再去找索引B索引B一樣也是要爬過才知道是否有你要的資料並不是你先用A濾掉條件之後B就會比較少工...查詢條件不固定基本上無解 索引要配查詢條件才有效不然就開地圖砲 全部上SSD或CACHE維持分析值正確 現在的資料庫會自己想辦法找出路的所以通常看到的都會是A抓一團 B抓一團 再拼起來
作者: wind681201 (阿風~~)   2018-07-28 16:47:00
了解,謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com