首次使用TSQL一些基本指令

时间:2011-08-30 20:06:43

标签: tsql

我正在编写一个将使用许多表的应用程序,并且我被告知在应用程序中使用存储过程。不是要走的路,它太慢了。 有人建议我使用TSQL。到目前为止我只使用了存储过程。以什么方式使用TSQL不同,我怎样才能加快速度。事实上,这是采用更快数据访问的方法还是有其他方法?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

存储过程是用T-SQL编写的,所以有人会发表这样的声明有点奇怪。

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

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