我有以下的MySQL查询:
SELECT
table1.*, table2.*
FROM
`Table1` AS table1,
`Table2` AS table2,
`Table3`
WHERE
table1.col1 = table2.col1 AND
table1.col1 = Table3.col1 AND
table1.col1 != '0' AND
table1.col1 NOT IN (1,2)
table1.col2 LIKE 'A' AND
(table1.col3 LIKE 'A' OR table1.col3 LIKE 'B') AND
Table3.col4 = 0 AND
Table3.col5 = 0 AND
Table3.col6 = 0
ORDER BY
table1.col10 ASC
LIMIT 0, 5没有ORDER BY语句,它在0.002秒内执行。
使用ORDER BY语句,它在2秒内执行。
我看到this answer似乎适用于OP,但是当我在我的地盘上尝试时,我得到了Duplicate column name 'col1'错误。
有关如何使用ORDER BY加快速度的任何想法?
编辑:
根据要求,下面是基于上面给出Duplicate column name 'col1'错误的链接尝试修改后的查询:
SELECT * FROM (
SELECT
table1.*, table2.*
FROM
`Table1` AS table1,
`Table2` AS table2,
`Table3`
WHERE
table1.col1 = table2.col1 AND
table1.col1 = Table3.col1 AND
table1.col1 != '0' AND
table1.col1 NOT IN (1,2)
table1.col2 LIKE 'A' AND
(table1.col3 LIKE 'A' OR table1.col3 LIKE 'B') AND
Table3.col4 = 0 AND
Table3.col5 = 0 AND
Table3.col6 = 0
) AS t1
ORDER BY
table1.col10 ASC
LIMIT 0, 5显然,这应该确保ORDER BY只在最终结果集确定后才能完成。