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