2011-08-30 18 views
0

我正在写一个应用程序,将使用很多表,我被告知在应用程序中使用存储的特效。是不是要走的路,它太慢了。 有人建议我使用TSQL。到目前为止,我只使用了存储过程。以什么方式使用TSQL不同,我该如何加快速度。事实上,这是快速访问数据还是其他方法?第一次使用TSQL一些基本的指令

+0

这个网站是更多的与问候的代码,你写的问题或疑问。这个问题会更适合于:http://programmers.stackexchange.com/ –

回答

0

传统的使用SP的论点始终是它们被编译,因此它们更快地运行。多年来情况并非如此,但一般而言,SP的运行速度较慢也不是这样。

如果提到的是开发时间而不是运行时间,那么可能会有一些事实,但考虑到您的技能,可能学习一种新方法会比使用SP减慢更多。

如果你的系统使用对象关系映射(ORM),那么SP可能会阻碍你,但是你也不会真的使用T-SQL - 它会为你完成。

1

TSQL是Microsoft和Sybase SQL方言,所以如果您使用SQLServer,您的存储过程将使用TSQL编写。
在大多数情况下,正确编写的存储过程会超出特定查询。另一方面,编码程序需要更多的技能,调试过程相当繁琐。没有看到你的程序就很难提供建议,但是有一些常见的事情会减慢SP。

执行计划在第一次运行时生成,但有时最优计划取决于输入参数。有关更多详细信息,请参阅here

阻止生成最佳计划的另一件事是使用SP主体中的条件。 例如,

IF (something) 
BEGIN 
    SELECT ... FROM table1 
    INNER JOIN table2 ... 
    ..... 
END 
ELSE 
BEGIN 
    SELECT ... FROM table2 
    INNER JOIN table3 ... 
    ..... 
END 

应重构为

IF (something) 
EXEC proc1; // create a new SP and move code from IF there 
ELSE 
EXEC proc2; // create a new SP and move code from ELSE there 
0

存储过程的编写与T-SQL,所以这是一个有点古怪,有人会做出这样的声明。

丹尼尔是对的,ORM是一个不错的选择。如果你正在做任何数据密集型操作(比如解析内容),我会首先查看数据库。你可能想要对SP做一些阅读,因为速度不是一切......还有其他的好处。这是谷歌从一重击,但你可以做更多的研究自己:

http://msdn.microsoft.com/en-us/library/ms973918.aspx