sql-server - 我可以合并 2 个非聚集索引(一列出现在 idx_1 的键列表中,并出现在 idx2 的包含列表中)
问题描述
我有一个非聚集索引(idx_1),键列表中有名字、姓氏和标记包括列表。另一个非聚集索引 (idx_2),在键列表中具有 first_name、last_name 和标记,并且在包含列表中没有列。我希望将这两个索引组合成一个索引。什么是最佳解决方案?
解决方案
是的!您应该删除 idx_1。但是,在此之前,分析索引使用情况并不是一个坏主意。查看每个索引上有多少次搜索和扫描。您可以使用此 T-SQL 查询。
SELECT OBJECT_NAME(IX.OBJECT_ID) Table_Name
,IX.name AS Index_Name
,IX.type_desc Index_Type
,SUM(PS.[used_page_count]) * 8 IndexSizeKB
,IXUS.user_seeks AS NumOfSeeks
,IXUS.user_scans AS NumOfScans
,IXUS.user_lookups AS NumOfLookups
,IXUS.user_updates AS NumOfUpdates
,IXUS.last_user_seek AS LastSeek
,IXUS.last_user_scan AS LastScan
,IXUS.last_user_lookup AS LastLookup
,IXUS.last_user_update AS LastUpdate
FROM sys.indexes IX
INNER JOIN sys.dm_db_index_usage_stats IXUS ON IXUS.index_id = IX.index_id AND IXUS.OBJECT_ID = IX.OBJECT_ID
INNER JOIN sys.dm_db_partition_stats PS on PS.object_id=IX.object_id
WHERE OBJECTPROPERTY(IX.OBJECT_ID,'IsUserTable') = 1
GROUP BY OBJECT_NAME(IX.OBJECT_ID) ,IX.name ,IX.type_desc ,IXUS.user_seeks ,IXUS.user_scans ,IXUS.user_lookups,IXUS.user_updates ,IXUS.last_user_seek ,IXUS.last_user_scan ,IXUS.last_user_lookup ,IXUS.last_user_update
除此之外,请查看以下链接sys.dm_db_index_usage_stats
推荐阅读
- wordpress - 我该如何使用
- 和wp_nav_menus 中的类?
- sorting - 为什么即使使用排序的可观察列表,我的组合框也没有排序?
- regex - 正则表达式:'\<' vs'\b'
- c++ - 在 Win32 应用程序中,如果未选择文件夹并且用户单击确定,则文件夹选择对话框将关闭
- html - 一键触发多个css动画
- javascript - Laravel - 从 javascript 函数添加到集合
- javascript - 为什么这种以最简单的方式模拟服务器端渲染 XSS 漏洞的尝试不起作用?
- python - 用于检查条件语句python的正则表达式
- dns - DNS 中的问题 - Gandi 上托管的域 - 由 Route 53 管理的 DNS
- javascript - Electron 在生产模式下运行