gpt4 book ai didi

sql-server - 在多列主键的第一列定义索引是否多余?

转载 作者:行者123 更新时间:2023-12-04 07:04:54 25 4
gpt4 key购买 nike

在多列主键的第一个字段上添加单独的单列索引是否多余?它是否取决于与表格大小相比第一列中唯一值的相对数量?

我的具体情况是,我正在构建几个具有两列和三列主键的中等大小的表(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 上添加一个单独的索引是否有帮助,或者是否愚蠢和多余?

最佳答案

这是多余的。您可以通过添加/删除索引和比较 explain 结果来轻松检查它。另一方面,对于复合键中的第二列,附加索引会有所帮助。

关于sql-server - 在多列主键的第一列定义索引是否多余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13161795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com