0
두 개의 데이터베이스 (하나의 MS SQL과 하나의 MYSQL)에서 데이터를 실행하고 비교하는 몇 가지 Coldfusion 쿼리가있어 instore 데이터베이스에서 Webshop의 가격을 업데이트하는 작업을 수행합니다.Coldfusion SQL 쿼리가 매우 느립니다.
문제는이 쿼리가 완료되는 데 4 분 이상이 소요된다는 것입니다. 속도를 높이거나 호스트의 제한 사항에 직면하게됩니까?
쿼리 - : 코멘트에 관한
<cfsetting requestTimeOut = "1440">
<cftry>
<cfset request.timing = structNew()>
<cfset getOffline = getTickCount()>
<cfquery datasource="MSSQLDATABSE" name="get_offlineproduct2" timeout="240">
SELECT p.id, p.code, pl.salesPrice3
FROM products p with(nolock)
INNER JOIN productposlocations pl with(nolock)
ON pl.ProductID = p.ID
WHERE pl.posLocationID = 1
</cfquery>
<cfset request.timing.getOffline = (getTickCount() - getOffline)/1000>
<cfquery datasource="MYSQLDATABASE" name="get_onlineproducts" timeout="240">
SELECT s.SKU_ID, s.SKU_MerchSKUID, s.SKU_Price, s.SKU_ShowWeb, b.brand_Name
FROM tbl_skus AS s
INNER JOIN tbl_prdtbrand_rel r
ON s.SKU_ProductID = r.prdt_brand_rel_Product_ID
INNER JOIN tbl_prdtbrands b
ON r.prdt_brand_rel_Brand_ID = b.brand_ID
ORDER BY b.brand_Name
</cfquery>
<cfquery name="qPriceCheck" dbtype="query">
SELECT *
FROM get_onlineproducts, get_offlineproduct2
WHERE SKU_MerchSKUID = code
AND SKU_Price <> salesPrice3
</cfquery>
<table border="1" cellspacing="2" cellpadding="2">
<tr>
<th>SKU ID</th>
<th>Brand</th>
<th>SKU Merchant ID</th>
<th>SKU Price</th>
<th>Stock Price</th>
<th>Price Updated?</th>
</tr>
<cfoutput query="get_onlineproducts">
<cfquery name="qPC" dbtype="query">
SELECT *
FROM get_offlineproduct2
WHERE code = '#get_onlineproducts.SKU_MerchSKUID#'
</cfquery>
<tr>
<td>#get_onlineproducts.SKU_ID#</td>
<td>#get_onlineproducts.brand_Name#</td>
<td>#get_onlineproducts.SKU_MerchSKUID#</td>
<td>#get_onlineproducts.SKU_Price#</td>
<cfif qPC.recordCount>
<td>#qPC.salesPrice3#</td>
<cfif qPC.salesPrice3 neq get_onlineproducts.SKU_Price>
<td>Yes</td>
<cfquery datasource="MYSQLDATABASE" name="UpdateonlineproductsPrices">
UPDATE tbl_skus
SET SKU_Price = '#qPC.SalesPrice3#'
WHERE SKU_MerchSKUID = '#get_onlineproducts.SKU_MerchSKUID#'
</cfquery>
</cfif>
</cfif>
</tr>
</cfoutput>
</table>
<cfset request.timing.totalTime = (getTickCount() - getOffline)/1000>
<cfdump var="#request.timing#">
<cfcatch type="Any" >
<cfdump var="#cfcatch#" label="cfcatch">
</cfcatch>
</cftry>
왜 모든 코드를 게시 하시겠습니까? – Mihai
유용 할 것 같아서 죄송합니다. – matthew
쿼리 게시 및 계획 – Mihai