【发布时间】:2014-02-26 11:55:34
【问题描述】:
我正在尝试在 MySql 中执行此查询:
SELECT areamaster.areaname,
builtydetails.builtycode,
builtydetails.builtyno,
builtydetails.builtydate,
builtydetails.pvtmarks,
areamaster_to.areaname,
stockview.pkgs,
stockview.state,
areamaster_from.areaname,
builtydetails.actualweight,
builtydetails.chargedweight,
consigner.customername,
consignee.customername,
stockview.calc,
stockview.stockdate
FROM (((((designpl_snps.stockview stockview
INNER JOIN designpl_snps.areamaster areamaster
ON stockview.location = areamaster.areacode)
INNER JOIN designpl_snps.builtydetails builtydetails
ON stockview.builtycode = builtydetails.builtycode)
INNER JOIN designpl_snps.areamaster areamaster_to
ON builtydetails.toloc = areamaster_to.areacode)
INNER JOIN designpl_snps.areamaster areamaster_from
ON builtydetails.fromloc = areamaster_from.areacode)
INNER JOIN designpl_snps.customermaster consigner
ON builtydetails.customercode = consigner.customercode)
INNER JOIN designpl_snps.customermaster consignee
ON builtydetails.customercode_consignee = consignee.customercode
ORDER BY areamaster.areaname,
builtydetails.builtycode
但这需要很长时间才能执行。有哪些方法和技巧可以使这个或任何其他 mysql 查询更快地工作?
【问题讨论】:
-
在连接中使用索引并按列排序
-
你没有过滤数据,所以这个查询可能返回了很多数据。返回了多少数据?性能问题可能仅仅是由于您的查询返回的数据量。
-
在此查询上使用 EXPLAIN 并发布结果以查看正在使用的索引。但是如果有大量数据,如果没有任何东西来缩小返回的行,这个 SQL 会很慢。
标签: mysql performance