[SQL ] 索引跟where

看板Database (資料庫)作者 (阿風~~)時間6年前 (2018/07/21 11:48), 編輯推噓1(1011)
留言12則, 3人參與, 6年前最新討論串1/1
資料庫名稱: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

07/23 11:43, 6年前 , 1F
這個 Query 跟 Index 的學問很深,通常要調整效能跟
07/23 11:43, 1F

07/23 11:53, 6年前 , 2F
設計的走向會很有關係。你可以強迫 Query 的時候用你要
07/23 11:53, 2F

07/23 11:53, 6年前 , 3F
的 Index,但效能可能不是你想要的
07/23 11:53, 3F

07/23 22:21, 6年前 , 4F
讓資料庫幫你決定比較好
07/23 22:21, 4F

07/23 22:21, 6年前 , 5F
索引一次是打全表的 你用索引A選了之後 再去找索引B
07/23 22:21, 5F

07/23 22:22, 6年前 , 6F
索引B一樣也是要爬過才知道是否有你要的資料
07/23 22:22, 6F

07/23 22:23, 6年前 , 7F
並不是你先用A濾掉條件之後B就會比較少工...
07/23 22:23, 7F

07/23 22:24, 6年前 , 8F
查詢條件不固定基本上無解 索引要配查詢條件才有效
07/23 22:24, 8F

07/23 22:24, 6年前 , 9F
不然就開地圖砲 全部上SSD或CACHE
07/23 22:24, 9F

07/23 22:27, 6年前 , 10F
維持分析值正確 現在的資料庫會自己想辦法找出路的
07/23 22:27, 10F

07/23 22:39, 6年前 , 11F
所以通常看到的都會是A抓一團 B抓一團 再拼起來
07/23 22:39, 11F

07/28 16:47, 6年前 , 12F
了解,謝謝
07/28 16:47, 12F
文章代碼(AID): #1RKgqZ3i (Database)
文章代碼(AID): #1RKgqZ3i (Database)