我正在编写一个将使用许多表的应用程序,并且我被告知在应用程序中使用存储过程。不是要走的路,它太慢了。 有人建议我使用TSQL。到目前为止我只使用了存储过程。以什么方式使用TSQL不同,我怎样才能加快速度。事实上,这是采用更快数据访问的方法还是有其他方法?
答案 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进行一些阅读,因为速度并非一切......还有其他好处。这是谷歌的热门话题,但你可以自己做更多的研究: