调整mysql查询以获得更好的性能

时间:2010-11-26 08:33:27

标签: sql sql-server-2005 tsql query-optimization performance

select top 1 col1 
from table1 
order by CreatedOn desc

此查询需要6分钟才能执行SQL Server 2005。

该表包含大约25,00,000行,总列数为36,但如上所示,我只是检索数据类型为uniqueidentifier的单个列。

所以,请帮助我进行优化,如果需要更多详细信息,请告诉我。

好吧,让我告诉你,我无法更改我的表结构或不能对表等进行任何更改,如索引等。建议仅对查询进行更改或更改不会对表结构产生影响。

8 个答案:

答案 0 :(得分:4)

你是否测试过它:

SELECT col1
FROM   table1
WHERE CreatedOn in (SELECT MAX(CreatedOn) AS col1 FROM table1)

答案 1 :(得分:2)

你可以尝试的是向Prequel(各处的SQL代码的神和创造者)祈祷,授予你神奇的访问权限和索引能力,不仅可以在一个结构合理的表中组合聚簇索引,也可以将非聚簇索引合并......

答案 2 :(得分:1)

CreatedOn

上设置索引

答案 3 :(得分:1)

您是否为此表创建了索引。索引增加以在处理查询时快速查找数据。

答案 4 :(得分:1)

CreatedOn创建索引。延迟的来源是由CreatedOn订购所需的时间,在其上创建索引将解决您的问题

答案 5 :(得分:1)

CreatedOn上创建非聚集索引并包含col1

CREATE NONCLUSTERED INDEX NC_Table1_CreatedOn_I_col1
    ON Table1(CreatedOn)
        INCLUDE (col1)

如果您无法创建索引,那么您无法加快查询速度!你可以做一个不同的查询,但这不是你的问题......

答案 6 :(得分:1)

  • 创建您拥有所有权利的自己的(临时)表
  • 在CreatedOn上的此表上创建聚簇索引
  • 复制所有数据
  • 之后的快乐查询

答案 7 :(得分:1)

select min(CreatedOn) from table1

如果你很幸运,SQL会在统计数据中得到这个,答案很快。

如果你运气不好,那么按照上面建议编制索引是你唯一的希望。