SQL 'ORDER BY' 子句速度慢
SELECT pp.productID
FROM productPrices pp
LEFT JOIN products p ON pp.productID = p.productID
WHERE MATCH(p.productName) AGAINST('beef' IN NATURAL LANGUAGE MODE)
AND pp.storeID IN ('store-4513')
ORDER BY pp.currentPrice LIMIT 10 OFFSET 0;
我有这个查询,在没有 的情况下运行得非常快,但是一旦添加它,它需要 >20 秒才能运行。我已经为 、 、 for in 、 for in 和其他一些添加了索引,但这并没有帮助。这是添加 .该表有 100 万行,它说它正在为其编制索引,这可能是问题所在。ORDER BYFULLTEXTproductNameINDEXstoreIDproductPricesINDEXcurrentPriceproductPricesEXPLAINproductPrices
+------+-------------+-------+--------+------------------------------------------------------------+------------------+---------+---------------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+--------+------------------------------------------------------------+------------------+---------+---------------------------+------+-------------+
| 1 | SIMPLE | pp | index | idx_storeID,idx_storeID_productID,idx_storeID_currentPrice | idx_currentPrice | 5 | NULL | 78 | Using where |
| 1 | SIMPLE | p | eq_ref | PRIMARY,idx_productID | PRIMARY | 52 | table.pp.productID | 1 | Using where |
+------+-------------+-------+--------+------------------------------------------------------------+------------------+---------+---------------------------+------+-------------+
我在慢速服务器上运行 MariaDB 服务器,这可能是部分原因,但没有 ORDER BY,它在不到 0.2 秒的时间内运行。