首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在左边创建索引(日期,4),这是可能的吗?或者有没有更好的方法来处理大数据?

在左边创建索引(日期,4),这是可能的吗?或者有没有更好的方法来处理大数据?
EN

Stack Overflow用户
提问于 2013-02-20 03:30:47
回答 1查看 605关注 0票数 1

我正在接管一个数据库,其中的一个表正在失控地增长。它有2011年、2012年、2013年以及未来的交易记录。

这张桌子对公司的运营至关重要。但它正在失控地增长,有730k条记录,并且随着每两周增加一次交易而不断增长。

我不希望改变表的现有结构,因为许多现有的操作都依赖于它,到目前为止,它有一个关于事务ID和事务日期的索引。但是查询表变得非常麻烦。

通过使用left(date,4)作为索引的一部分,是否可以将它们索引到事务日期所在的年份?

编辑:表没有规范化(我也看不出规范化的目的,因为每一行对于索赔编号都是唯一的),每条记录有168个字段,其中有5个不同的varchar "memo“字段(255)。

EN

回答 1

Stack Overflow用户

发布于 2013-02-20 03:44:21

其中一个选项是创建一个Filtered Index -它类似于根据特定条件联合一组记录。

在您的例子中,您应该创建多个索引-每个索引过滤特定年份的记录。例如:

代码语言:javascript
复制
CREATE NONCLUSTERED INDEX IndexFor2013Year
    ON MyTable.BillOfMaterials (SomeDate)
    WHERE SomeDate>"2013-01-01 00:00:00" and SomeDate<"2014-01-01 00:00:00";
GO

无论如何,为经常执行DML操作(UPDATE/ INSERT/ DELETE)的表创建许多索引甚至可能导致较差的性能。

您应该执行一些测试并比较执行计划。

请注意,我只是举了一个例子--根据查询的具体内容,您应该创建一个索引。有时,在观察查询的执行计划时,SQL Management Studio (2012)建议我使用什么样的索引才能获得更好的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14965808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档