У меня следующий запрос 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 секунды.
Я видел этот ответ , который, казалось, работал на 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 будет выполнен только после определения окончательного набора результатов.