2010-10-26 114 views
0

我有一个关于如何优化我的sp的问题,实际上它是一个视图,但我决定改变sp以使其更快,并且它确实有效。首先,视图运行需要27秒,sp。需要16秒。所以它越来越好,但如何让它更好?优化存储过程

我正在运行的表格是600条记录,我将返回80个字段和80个字段,其中4个字段是图像。每张唱片的容量不能超过400KB。

任何建议我能做些什么。

+8

你必须向我们展示了代码... – Fosco 2010-10-26 18:02:05

+2

呀。真。另外我怀疑是否让它变得更快 - 你做了另一个你完全没有意识到的变化。向我们展示两个代码示例。对于600条记录的数据检索,27秒和16秒的速度非常慢。像真的很慢。我怀疑你那时需要600个图像位图。 – TomTom 2010-10-26 18:03:18

+0

回应以上;即使你的查询需要进行表扫描,包括读取这些图像的每个字节以对谓词进行测试,16秒看起来就像是一个懒惰时间。我们不仅需要查看代码,还需要了解一些关于数据库结构的知识。当然.. 80个字段... – 2010-10-26 18:09:07

回答

1

您是否尝试过为SPROC调用的查询实现适当的索引? 另请参阅执行计划并查看哪些类型的索引可以最适合查询。 最后,更新表和索引统计信息并检查索引上的碎片以获取任何性能匹配。

+0

我试过做索引,我用非集群和覆盖索引但没有改进,同样的事情,16秒。我用发动机的调音顾问分析了这张桌子,并没有提出任何推荐。 – Tony 2010-10-26 19:10:59

2

你说你试过使用覆盖索引,这对于包含图像的80列的表是一个不错的主意。但是,你说这不适用于图像。我建议你分开这张桌子,即使你只是制作几张1到1张桌子。 select * from ...中的“*”没有多大帮助。只返回你需要的列。另外,WHERE呢?尽管仅返回所需的列很重要,但仅返回所需的行更为重要。如果您没有WHERE条款,那么世界上的所有指数都无济于事。

+0

感谢KM,我知道,但我对SQL方面负责,并且应用程序需要所有行,我建议使用前端的人来调用一个字段,但他希望拥有所有内容,所以我被卡住了。 。 – Tony 2010-10-26 19:55:35

0

“表,我跑我的SP是600分的记录,我回到大约80场进出80,4场是图像”

如果我是你,我早就把图像转换成文件系统及其在数据库中的索引路径。

"Columns that are of the large object (LOB) data types ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, or image cannot be specified as key columns for an index" as well as non-key (included) columns

此外,我会查明图像really cached by your webbrowser

+0

感谢vgv,但这是针对SQL 2008的? – Tony 2010-10-27 17:41:35