SELECT
и других запросовBuy this Reference Manual in softcover from Barnes & Noble!
Оптимизация - сложная задача, потому что она, в конечном счете, требует понимания системы в целом. В отдельных случаях для выполнения локальной оптимизации достаточно знать систему или приложение не в полном объеме, однако чтобы сделать систему более оптимальной, нужно разбираться в том, как она устроена.
В этой главе будут рассмотрены различные способы оптимизации MySQL и представлены некоторые примеры ее выполнения. Не следует забывать, однако, что всегда можно найти некоторые дополнительные возможности сделать систему еще быстрее (хотя каждый следующий шаг в этом направлении будет даваться все труднее и труднее).
SELECT
и других запросовEXPLAIN
(получение информации о SELECT
)SELECT
WHERE
DISTINCT
LEFT JOIN
и RIGHT JOIN
ORDER BY
LIMIT
INSERT
UPDATE
DELETE
SET
Posted by on Monday October 7 2002, @3:14pm | [Delete] [Edit] |
Slow SQLs may be a result of unintended locks.
I had trouble with an SELECT that joined 4 tables but should return only 1 row (LIMIT 1). After returning the result the connection still was heavy busy (a bug?). The CPU usage of mysqld was about 97% and SHOW PROCESSLIST showed that the connection was in a state "Copying to tmp table" and thus LOCKING all tables participating in the query.
The solution was to split the SQL into multiple CREATE TEMPORARY TABLE SQLs and then joining these. That reduced the execution speed from about 300 seconds to something below 1 second :)
Add your own comment.