Index-Tuning
多個索引和調整
我正在使用 Azure SQL 數據庫 2019。
假設我有列 AF 和以下索引。
主鍵(集群):A
索引1:B(ASC),C(ASC)
索引 2:B (ASC)
如果我想執行下面的查詢,是否需要索引 2 或者它是否可以使用索引 1 而不會影響性能?
SELECT A,B,C,D,E FROM table WHERE B = 'X'
回答您的問題的唯一最佳方法是執行查詢、測量性能並查看執行計劃(兩步,一次測量性能,一秒鐘獲得執行計劃,擷取執行計劃會影響性能)。查看使用了哪個索引以及如何使用它。然後,禁用該索引,再次執行查詢,看看會發生什麼。這將比這裡的任何答案更能告訴你。
但是,根據提供的資訊,並假設數據分佈相對均勻以及索引的選擇性良好,您可能會看到這一點。索引 2 用於查找提供的值“X”,鍵查找用於獲取索引 2 BCDE 中未包含的列。索引 1 不太可能被使用,因為它更寬的鍵意味著更多的頁面和可能更深的索引。在這種情況下,優化器更有可能選擇索引 2。
讓我強調一下,這個答案是猜測,沒有測試,沒有辦法確定。也有可能因為索引 1 更具選擇性,一個複合鍵,它可能對優化器更具吸引力。然後將其與密鑰查找一起使用。這不太可能,但測試會告訴你比猜測更多的資訊。