Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Int列上的索引超过日期列 背景 Microsoft SQL Server 2008 R2 每天约有10万条记录的表 大多数查询此表的查询都按指定的列进行筛选 问题_Sql_Sql Server_Performance_Sql Server 2008 - Fatal编程技术网

Int列上的索引超过日期列 背景 Microsoft SQL Server 2008 R2 每天约有10万条记录的表 大多数查询此表的查询都按指定的列进行筛选 问题

Int列上的索引超过日期列 背景 Microsoft SQL Server 2008 R2 每天约有10万条记录的表 大多数查询此表的查询都按指定的列进行筛选 问题,sql,sql-server,performance,sql-server-2008,Sql,Sql Server,Performance,Sql Server 2008,因此,要稍微提高数据库的性能,一个选项是在日期列上添加一个索引,但不是将日期存储为日期类型,而是使用以下格式将其存储为整数: ddMMyyyy **Edit: Changed the format to yyyyMMdd after looking at comments** 问题: 你认为这是个好主意吗 你这样做会有什么改进吗 有什么可能的缺点吗 我们仍处于设计阶段,所以如果我们愿意,我们仍然有时间改变这一点 我们希望有很多查询按此列进行筛选,但在我看来,这不会带来任何性能改进,在没有指定时

因此,要稍微提高数据库的性能,一个选项是在日期列上添加一个索引,但不是将日期存储为日期类型,而是使用以下格式将其存储为整数:

ddMMyyyy
**Edit: Changed the format to yyyyMMdd after looking at comments**
问题:
  • 你认为这是个好主意吗
  • 你这样做会有什么改进吗
  • 有什么可能的缺点吗
  • 我们仍处于设计阶段,所以如果我们愿意,我们仍然有时间改变这一点


    我们希望有很多查询按此列进行筛选,但在我看来,这不会带来任何性能改进,在没有指定时间的情况下使用日期列也是一样的。

    如果您试图提高表的性能,添加一个额外的列是一种可疑的开始方式

    首先,如果表已经有日期列,则使用该列。日期是4字节,因此它与整数大小相同。更重要的是,它为您提供了数据库中内置的各种日期功能——获取月份名称、按日期排序、计算日期之间的天数,等等

    建立索引是提高绩效的一种方法。我还建议您考虑对表进行分区。您可能不需要按天拆分表,但按月拆分会生成大小合理的分区(大约300万行)

    事实上,如果查询都是最近的数据,那么我可能建议您创建一个历史表,至少可以查询它。然后将最新数据保存在“当前”表中。您可以有一个每天运行的进程,从当前数据中删除最早的一天数据,并将行放入历史记录表中


    在任何情况下,如评论所示,格式
    ddMmyyyy
    都是不合理的格式。它适用于相等,但不适用于之间的或按排序

    ddMMyyyy
    中进行排序非常糟糕。最好使用
    yyyyMMdd
    date
    数据类型反正没有时间。除非你说的是
    datetime
    数据类型。@juergen在查看注释后更改了格式,完全正确。这不是真正的添加,而是使用int列而不是date列。我们按照建议将格式更改为yyyyMMdd,我想它将保持这种状态,谢谢!关于分区注释,我们使用的是SQLServer2008R2标准版。我认为分区只适用于企业版。所以那里没有运气。