[英]sql query taking too long
我有一个简单的“插入..”查询,大约需要40秒才能执行。 它只是从一个表中获取记录,然后插入另一个表中。
tbl_TempCatalogue
表上具有F1
索引和BatchID
select
本身并不慢, insert into
速度很慢。 完整的查询是:
insert into tbl_ItemPrice
(CATALOGUEVERSIONID,SERIESNUMBER,TYPE,PRICEFIELD,PRICE,
PRICEONREQUEST,recordid)
select 296 as CATALOGUEVERSIONID
,ISNULL(F2,'-32768') as SERIESNUMBER
,ISNULL(F3,'-32768') as TYPE
,ISNULL(F4,'-32768') as PRICEFIELD,F5 as PRICE
,(case when F6 IS NULL then null when F6 = '0' then 'False'
else 'True' end ) as PRICEONREQUEST
,newid()
from tbl_TempCatalogue
where F1 = 450
and BATCHID = 72
谢谢
如果表很大,则可能会受益于tbl_TempCatalogue表中F1和BATCHID上的索引。 目前尚不清楚您使用的是哪种DBMS,但是大多数都具有不错的工具来向您展示执行计划。 如果要在大型表上进行全表扫描,则可能需要很长时间才能运行。
另外,您说的“插入”速度很慢,但是您只包含选择的代码。 选择本身慢吗?
tbl_TempCatalogue表上是否有索引来帮助数据库查找F1 = 450和BATCHID = 72的行?
否则,可能需要扫描整个表以找到它们。
您的查询看起来不错..但是我担心的是newid()函数,那里写的什么逻辑可能会影响性能,请尝试在没有newid()的情况下运行,并查看select语句的执行时间。
要解决此类问题,请按照以下步骤操作
在比较了这些时隙之后,您将能够找到问题所在的确切根本原因。.此后,请发布该时隙,以便我们尝试解决该问题。
您说问题出在INSERT而不是SELECT。 因此,可能的罪魁祸首是(无固定顺序):
您必须进行何种诊断的工具将取决于您所使用的数据库产品(以及数据库的哪个版本)。 请在您的问题中包括这些详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.