我有一个返回1400行的查询。
这是基本的。
SELECT * FROM dbo.entity_event ee
平均耗时250到380毫秒,平均为360毫秒。我希望这会更快。我在笔记本电脑上运行它,但是i7,8gb,SSD。这看起来是否正常,还是应该更快?该表仅包含总结果集。没有Where子句。
运行:
SELECT * FROM dbo.entity_event ee WHERE entity_event_type_id = 1
需要同时。
表中的主键(id)上有一个聚簇索引。
该表有大约15列。主要是日期,整数和小数(16,2)。
如果看起来很慢,我可以看一下如何改善这一点?我确实希望随着系统的使用,该表变得相当大。
我无法在我的实际网站上跟踪此信息,因为主机不允许SQL配置文件连接(权限)。我只能查看我的开发机器。虽然现场直播似乎并不快。
问题源自我拥有的VIEW,平均需要643毫秒。它有8个连接表,其中4个是OUTER连接,排除了索引视图的选项。
但是,视图确实使用列名,包括其他逻辑(CASE ... ISNULL等)。
编辑:我注意到SELECT TOP 10 ...需要1ms。 SELECT TOP 500 ..需要161ms ......所以,它确实看起来像liniar,并且与数据量有关。我想知道这是否可以改善?执行计划:
答案 0 :(得分:0)
这看起来很正常,因为无论WHERE子句如何,它都会进行全扫描 - 因为entity_event_type_id不是你的PK也不是索引的。因此,放入WHERE子句无济于事,因为它没有编入索引。
执行前N个会有所帮助,因为它知道它不需要扫描整个聚集的pk索引。
所以...是的,它可以改进 - 如果你索引entity_event_type_id,你会期望使用WHERE子句的时间更快。但是一如既往......索引它只有你真的会在WHERE子句中经常使用那个字段。 --Jim