У нас есть несколько запросов coldfusion, которые запускают и сравнивают данные из двух баз данных, одного MS SQL и одного MYSQL для выполнения задачи по обновлению цен на нашем интернет-магазине из нашей базы данных instore.Запросы Coldfusion SQL очень медленные
Проблема заключается в том, что этот запрос занимает больше четырех минут, чтобы завершить. Можем ли мы упростить этот запрос, чтобы ускорить его или мы столкнулись с ограничением от нашего хоста?
Запрос -:
<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