Tôi đang gặp vấn đề về hiệu năng trên các truy vấn cơ sở dữ liệu nhất định có tập kết quả lớn có thể.
Truy vấn trong câu hỏi, tôi có ba AND
s trong mệnh đề WHERE
Liệu thứ tự của các mệnh đề có vấn đề?
Như trong, nếu tôi đặt mệnh đề ASI_EVENT_TIME trước tiên (vì điều đó sẽ loại bỏ hầu hết các kết quả ra khỏi bất kỳ mệnh đề nào.
Điều đó sẽ cải thiện thời gian chạy trên truy vấn?
TRUY VẤN:
SELECT DISTINCT activity_seismo_info.*
FROM `activity_seismo_info`
WHERE
activity_seismo_info.ASI_ACTIVITY_ID IS NOT NULL AND
activity_seismo_info.ASI_SEISMO_ID IN (43,44,...,259) AND
(
activity_seismo_info.ASI_EVENT_TIME>='2011-03-10 00:00:00' AND
activity_seismo_info.ASI_EVENT_TIME<='2011-03-17 23:59:59'
)
ORDER BY activity_seismo_info.ASI_EVENT_TIME DESC
GIẢI THÍCH truy vấn:
+----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+
| 1 | SIMPLE | act...o | range | act...o_FI_1,act...o_FI_2 | act...o_FI_1 | 5 | NULL | 65412 | Using where; Using filesort |
+----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+
Sử dụng:
PHP 5.2
MySQL 5.0.51a-3ubfox5.4
Tuyên truyền 1.3
Bản giao hưởng 1.2.5
order by
thuộc về cơ sở dữ liệu.