Index-Tuning

多個索引和調整

  • September 10, 2020

我正在使用 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 更具選擇性,一個複合鍵,它可能對優化器更具吸引力。然後將其與密鑰查找一起使用。這不太可能,但測試會告訴你比猜測更多的資訊。

引用自:https://dba.stackexchange.com/questions/275204