赞
踩
CREATE INDEX idx_dt ON dim_ku (dt)
CREATE NONCLUSTERED INDEX idx_dim_ku_dt ON [dim_ku] (dt) INCLUDE (ord, num2, FinaMoney, locked,locknum,product_title)
CREATE NONCLUSTERED INDEX idx_dim_ku_dt_ck ON [dim_ku] (dt) INCLUDE (ord, num2, FinaMoney, ck, locked,locknum,product_title, sortck_sort1)
CREATE NONCLUSTERED INDEX idx_dim_ku_dt_dayDiff ON [dim_ku] (dt, dayDiff) INCLUDE (FinaMoney)
CREATE NONCLUSTERED INDEX idx_dim_ku_dt_Status ON [dim_ku] (dt, Status) INCLUDE (FinaMoney)
CREATE NONCLUSTERED INDEX idx_dim_ku_dt_daterk ON [dim_ku] (dt, daterk) INCLUDE (ord, FinaMoney, product_title)
删除索引:
DROP INDEX idx_ods_M2_WorkAssigns_dt ON ods_M2_WorkAssigns;
警告! 最大键长度为 900 个字节。索引 'idx_ods_M2_WorkAssigns_dt' 的最大长度为 8003 个字节。对于某些大值组合,插入/更新操作将失败。
字段太长 改为构建前缀索引(没验证过,后继可以尝试下)
-- 首先,如果表`ods_M2_WorkAssigns`中还没有包含截取前100个字符的列,则创建一个: ALTER TABLE ods_M2_WorkAssigns ADD Cateid_WA_Prefix AS LEFT(Cateid_WA, 100) PERSISTED;
-- 然后,在新创建的计算列和dt字段上创建非聚集索引
CREATE NONCLUSTERED INDEX idx_ods_M2_WorkAssigns_dt ON [ods_M2_WorkAssigns] (dt, Cateid_WA_Prefix);
最后改为
CREATE NONCLUSTERED INDEX idx_ods_M2_WorkAssigns_dt ON [ods_M2_WorkAssigns] (dt) INCLUDE (Cateid_WA)
速度也还可以
该SQL语句是创建一个名为idx_ods_M2_WorkAssigns_dt
的非聚集索引,应用于表ods_M2_WorkAssigns
。索引结构如下:
索引键(Key Columns):只包含dt
字段。这意味着索引将按dt
字段的值进行排序。
包含列(Included Columns):包含Cateid_WA
字段。虽然Cateid_WA
字段不在索引键中,但其值会被包含在索引内部的每个索引叶级页中。这样,在执行查询时,如果查询条件涉及到dt
字段,并且需要返回Cateid_WA
字段的值,那么数据库可以直接从索引中获取所需数据,而无需额外回表操作,从而提高查询性能。
总结:这个索引主要用于优化那些以dt
为筛选条件并需要返回Cateid_WA
字段的查询场景。
----------------------------------------------------------------
CREATE NONCLUSTERED INDEX 与 CREATE INDEX 的区别
在SQL Server以及许多其他关系型数据库系统中,CREATE INDEX
是创建索引的通用语法。而 CREATE NONCLUSTERED INDEX
则是更具体地指定了要创建的是非聚集索引。
区别如下:
CREATE INDEX:
CREATE NONCLUSTERED INDEX:
对比聚集索引(Clustered Index):
所以,在SQL Server中,当你使用 CREATE INDEX
并未明确指定类型时,如果没有聚集索引存在,可能会默认创建一个聚集索引(具体情况取决于数据库版本、设置及语句中的详细信息),或者如果已经有聚集索引,则将创建非聚集索引。而 CREATE NONCLUSTERED INDEX
则始终确保创建的是非聚集索引。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。