日期:2014-05-16  浏览次数:20669 次

select 简单查询, 5分钟以上

我有一个很小的表(数据库了MS SQL SERVER 2000), 有20万行左右, 大概10列. 数据表没加有索引.

我根据字段SN 从这个表中查询满足条件的最新一行数据. 

SELECT TOP 1 A, B, C, D FROM 数据表 WHERE SN='xxxxxx'  AND test_result='PASS' Order by DateTime DESC


但查找2000行的数据居然需要5分钟以上, 请问如果优化呢? 只能加索引吗?
------解决方案--------------------
为什么不加索引呢?
应在(SN,test_result)上建索引.
------解决方案--------------------
只能建索引了。
------解决方案--------------------
建索引快很多。。
------解决方案--------------------
CREATE CLUSTERED INDEX CIX_数据表 ON 数据表(DateTime);
CREATE INDEX IX_数据表 ON (sn,a,b,c,d);

把“数据表”和列名替换成你的真实名字试试,20万不加索引只有全表扫描,加索引不影响数据,它不像约束,test_result选择度太低,不应该作为索引键

引用:
Quote: 引用:

为什么不加索引呢?
应在(SN,test_result)上建索引.


数据库是别人以前建的,如果能不动数据库我尽量不动.
test_result的值只有两个"pass"或者"fail", 这也要加索引吗