Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
在Ms sql中进行排序的最快方法_Sql_Sql Server_Performance - Fatal编程技术网

在Ms sql中进行排序的最快方法

在Ms sql中进行排序的最快方法,sql,sql-server,performance,Sql,Sql Server,Performance,我有两个大型数据库(每个270万个条目),需要合并和排序。 按order by进行合并表排序时,会占用大量时间。 有没有其他方法可以更快地对合并表进行排序? 我已经尝试了索引,这加快了执行速度,但我正在寻找更高的速度 如果有人可以帮忙的话。谢谢,这在很大程度上取决于您的实际列,但您应该尝试进一步优化此查询的索引。正确放置索引应该可以加快它的速度,但您必须意识到它仍然是一堆数据,排序在SQL Server中是一个难题 你可能想查看一些提示 在排序列[date]上设置聚集索引,以便对每个表中的数据进

我有两个大型数据库(每个270万个条目),需要合并和排序。 按order by进行合并表排序时,会占用大量时间。 有没有其他方法可以更快地对合并表进行排序? 我已经尝试了索引,这加快了执行速度,但我正在寻找更高的速度
如果有人可以帮忙的话。谢谢,这在很大程度上取决于您的实际列,但您应该尝试进一步优化此查询的索引。正确放置索引应该可以加快它的速度,但您必须意识到它仍然是一堆数据,排序在SQL Server中是一个难题

你可能想查看一些提示

  • 在排序列
    [date]
    上设置聚集索引,以便对每个表中的数据进行预排序
  • 在主键为
    ([date],id)
    的查询上创建索引视图。这将有效地创建由RDBMS引擎自动维护的合并表
  • 为tempdb添加更多的RAM、内核和更快的ssd等
  • 更新以下关于方法1的评论。基于此查询:

    Select *
    From table1
    Inner Join table2 On table1.id=table2.id
    Order By table1.[date]
    
    table2
    具有主键的
    id
    不需要任何附加索引

    表1
    将受益于

    CREATE CLUSTERED INDEX idx_table1_date ON table1 ([date])
    INCLUDE ( ...all other fields except id which is included anyway... );
    --... so that all the select data is available from the index without another lookup by PK
    

    这将有效地创建一份按日期预先排序的
    表1
    。作为结果,查询将扫描
    idx\u table1\u date
    并按主键查找
    table2

    何时排序?为什么您需要一次提取270万行,除非是为了转储?需要更多详细信息。在SQL中,排序成本非常高。两个问题;为什么需要对这些数据进行排序?你能在你的应用层做到这一点吗?我需要显示所有的条目在sql中对数据排序的唯一方法是使用order by。如果你有540万条记录,对它们进行排序需要时间,这是不可能的。您可能需要考虑分页,因为显示给人的记录数量是疯狂的。我的查询是:从表1中的“内部联接表2”中选择“*”。ID=表2。ID按日期DESC……我在主键(ID)上创建了聚集索引。两个表的。是否应该创建任何其他索引?日期来自哪个表?我正在对表1和表2中的数据执行内部联接。两者都包含日期列OK,但是两个不同表中具有匹配的
    id
    的两条记录可以具有不同的
    date
    值。你的
    顺序中有哪个
    日期
    表达式?说到排序,我已经把顺序搞乱了!固定的。