JAVA进阶:提高 SQL 性能的几种方法

JAVA进阶:提高 SQL 性能的几种方法,第1张

概述1, 从 INSERT 返回 IDENTITYSELECT @@IDENTITY2, 内嵌视图与临时表临时表 - 在 tempdb 中的临时表会导致查询进行大量 I/O *** 作和磁盘访问,临时表会消耗大量资源。内嵌视图 -使用内嵌视图取代临时表。内嵌视图只是一个可以联接到 FROM 子句中的查询。如果只需要将数据联接到其… 1,从 INSERT 返回 IDENTITY

  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 性能的几种方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1156757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存