我在系统重载时遇到问题。
下面的查询从3个表中获取数据,其中2个表具有超过10.000条记录,并且运行需要50秒钟。
SELECT DISTINCT
p.prod_name,
p.prod_price,
Sum(dt.vt_qtd) as total_qtd
FROM tdb_products p
LEFT JOIN tdb_sales_temp dt ON p.prod_mp_id = dt.vt_product
LEFT JOIN tdb_sales s ON dt.vt_cupom = s.sl_coupom
WHERE
s.sl_day = $day_link AND
s.sl_mon = $mon_link AND
s.sl_year = $year_link
GROUP BY
p.prod_name
ORDER BY
p.prod_name ASC
这正常吗?
解决!
最佳答案
简短的答案是否定的,那绝对不是一个好的时间长度。任何常见的数据库系统都应能够在不到一秒的时间内处理多个10,000行表。
不知道完整的架构或dbms后端,我的建议如下:
索引-确保联接中使用的列具有正确的索引
数据类型-如果要连接的列上的数据类型不同,则dbms将必须为每个行连接执行一次转换,这可能会导致大量的性能消耗。
关于mysql - 我的SQL查询这么慢正常吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14365199/