在多列主鍵的第一個字段上添加單獨的單列索引是多餘的嗎?這是否取決於第一列中與表格大小相比唯一值的相對數量?在多列主鍵的第一列上定義索引是多餘的嗎?
我的具體情況是,我用兩列和三列主鍵構建了幾個中等大小的表(20k-500k行)。這些表格中的第一列是與某個商業活動相對應的整數(我在這裏將其稱爲「活動」),第二列是產品ID(實際上是UPC)或商業位置標識符:
-- Activity - upc table: entire table is a two-column primary key
CREATE TABLE activity_upc (
activity_id int NOT NULL,
upc_id dec(18,0) NOT NULL,
CONSTRAINT PRIMARY KEY PK_activity_upc CLUSTERED (activity_id, upc_id)
)
-- One of several transaction tables, unique by activity, location, and date
-- (date in SQL server is a 3-byte integer)
CREATE TABLE activity_stuff (
activity_id int NOT NULL,
location_id smallint NOT NULL,
transaction_date date NOT NULL,
[ other columns ],
CONSTRAINT PRIMARY KEY PK_activity_stuff CLUSTERED (
activity_id, location_id, transaction_date)
)
有幾百個唯一的位置ID,幾千個唯一的活動ID和超過一百萬個唯一的UPC。我在location_id
上有一個索引,因爲查詢的頻率很高,只有location_id
。 在activity_id上添加一個單獨的索引會有幫助,或者是愚蠢和多餘的,它也經常用作單列過濾器嗎?
索引支持查詢。我無法想象第二個索引如何幫助大家,但不知道您試圖調整的查詢是不可能的。任何不支持查詢的索引都是愚蠢的和多餘的 –