sql – 可以通过在列x上创建一个索引来优化SELECT DISTINCT x FR
发布时间:2020-12-12 16:29:39 所属栏目:MsSql教程 来源:网络整理
导读:我有一张巨大的桌子,在一些列x上有一个小得多(数量级)不同值的数字. 我需要像SELECT DISTINCT x FROM hugeTable这样的查询,我想做的比较快. 我做了像CREATE INDEX giantTable_by_x ON hugeTable(x)这样的东西,但由于某种原因,即使输出较小,查询执行也不是很快
我有一张巨大的桌子,在一些列x上有一个小得多(数量级)不同值的数字.
我需要像SELECT DISTINCT x FROM hugeTable这样的查询,我想做的比较快. 我做了像CREATE INDEX giantTable_by_x ON hugeTable(x)这样的东西,但由于某种原因,即使输出较小,查询执行也不是很快.查询计划显示,97%的时间花在了bigTable_by_x的索引扫描上,其估计的行数等于整个表的大小.其次是哈希匹配操作. 由于我在列x上创建了一个索引,我不能指望这个查询运行得很快? 请注意,我使用的是Microsoft SQL Server 2005. 解决方法这可能不是索引的问题,而是数据设计之一.规范化,准确.事实上,您需要查询字段的不同值,甚至愿意添加索引,这是一个很强的指示器,该字段应该被标准化为具有(小)连接键的单独表格.然后,通过扫描更小的查找外部表,可以立即获得不同的值.更新 create view vwDistinct with schemabinding as select x,count_big(*) from schema.hugetable group by x; create clustered index cdxDistinct on vwDistinct(x); select x from vwDistinct with (noexpand); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容