eli*_*uez 4 sql database sql-server sql-server-2008
我在sql server 2008中拥有大量数据的表
|ID|Name|Column_1|Column_2|
|..|....|........|........|
Run Code Online (Sandbox Code Playgroud)
超过18,000条记录.所以我需要具有最低值的行Column_1是日期,但可以通过任何数据类型(未分类),所以我使用这些句子
SELECT TOP 1 ID, Name from table ORDER BY Column_1 ASC
Run Code Online (Sandbox Code Playgroud)
但这非常缓慢.我认为我不需要整理整个表格.我的问题是如何使用TOP 1和获得相同的日期ORDER BY
我不明白为什么18,000行信息会导致太慢的减速,但显然没有看到你存储的数据是什么.
如果您经常使用该Column_1字段,那么我建议您在其上放置一个非聚集索引...这将加快您的查询速度.
你可以通过Sql Server Management Studio"设计"你的表,或直接通过TSQL来实现它...
CREATE INDEX IX_myTable_Column_1 ON myTable (Column_1 ASC)
Run Code Online (Sandbox Code Playgroud)
有关在此处创建索引的MSDN的更多信息
更新感谢@GarethD的评论,他帮我解决了这个问题,因为我实际上并没有意识到这一点.
作为上述TSQL语句的一个额外部分,如果包含将在索引中使用的其他列的名称,它将提高查询的速度....
CREATE INDEX IX_myTable_Column_1 ON myTable (Column_1 ASC) INCLUDE (ID, Name)
Run Code Online (Sandbox Code Playgroud)
正如GarethD指出的那样,使用这个SQLFiddle作为证明,执行计划要快得多,因为它避免了"RID"(或行标识符)查找.
有关在此处创建包含列的索引的MSDN的更多信息
谢谢@GarethD