SELECT @@IDENTITY
2,内嵌视图与临时表
临时表 - 在 tempdb 中的临时表会导致查询进行大量 I/O *** 作和磁盘访问,临时表会消耗大量资源。
内嵌视图 -使用内嵌视图取代临时表。内嵌视图只是一个可以联接到 FROM 子句中的查询。如果只需要将数据联接到其他查询,则可以试试使用内嵌视图,以节省资源。
3,避免 left JOIN 和 NulL
left JOIN 消耗的资源非常之多,因为它们包含与 NulL(不存在)数据匹配的数据。在某些情况下,这是不可避免的,但是代价可能非常高。left JOIN 比 INNER JOIN 消耗资源更多,所以如果您可以重新编写查询以使得该查询不使用任何 left JOIN,则会得到非常可观的回报。
加快使用 left JOIN 的查询速度的一项技术涉及创建一个 table 数据类型,插入第一个表(left JOIN 左侧的表)中的所有行,然后使用第二个表中的值更新 table 数据类型。此技术是一个两步的过程,但与标准的 left JOIN 相比,可以节省大量时间。一个很好的规则是尝试各种不同的技术并记录每种技术所需的时间,直到获得用于您的应用程序的执行性能最佳的查询。
DECLARE @tblMonths table (sMonth VARCHAR(7))
4,灵活使用笛卡尔乘积
对于此技巧,我将进行非常详细的介绍,并提倡在某些情况下使用笛卡尔乘积。出于某些原因,笛卡尔乘积 (CROSS JOIN) 遭到了很多谴责,开发人员通常会被警告根本就不要使用它们。在许多情况下,它们消耗的资源太多,从而无法高效使用。但是像 sql 中的任何工具一样,如果正确使用,它们也会很有价值。
其中一段示例代码,值得效仿:
-- 笛卡尔乘积则可以返回所有月份的所有客户。笛卡尔乘积基本上是将第一个表与第二个表相乘,生成一个行集合,其中包含第一个表中的行数与第二个表中的行数相乘的结果。因此,笛卡尔乘积会向表 @tblFinal 返回 12(所有月份)*81(所有客户)=972 行。最后的步骤是使用此日期范围内每个客户的月销售额总计更新 @tblFinal 表,以及选择最终的行集。
DECLARE @tblMonths table (sMonth VARCHAR(7))
DECLARE @tblCustomers table ( CustomerID CHAR(10),
Companyname VARCHAR(50),
Contactname VARCHAR(50))
DECLARE @tblFinal table ( sMonth VARCHAR(7),
CustomerID CHAR(10),
Contactname VARCHAR(50),
mSales MONEY)
DECLARE @dtStartDate DATETIME,
总结以上是内存溢出为你收集整理的JAVA进阶:提高 SQL 性能的几种方法全部内容,希望文章能够帮你解决JAVA进阶:提高 SQL 性能的几种方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)