В MySQL EXPLAIN есть столбец с именем Key
. Если в этом столбце что-то есть, это очень хороший показатель, это означает, что запрос будет использовать индекс.
Запросы, в которых используются индикаторы, как правило, безопасны, поскольку они, вероятно, были продуманы разработчиком базы данных, когда он разрабатывал базу данных.
Однако
Есть еще одно поле с именем Extra
. Это поле иногда содержит текст using_filesort
.
Это очень очень плохо. Это буквально означает, что MySQL знает, что запрос будет иметь результирующий набор, больший, чем доступная память, и, следовательно, начнет обмениваться данными на диск для их сортировки.
Заключение
Вместо того, чтобы пытаться предсказать время , которое требуется для запроса, просто посмотрите на эти два индикатора. Если запрос using_filesort
, запретите пользователю. И в зависимости от того, насколько строгим вы хотите быть, если в запросе не используются какие-либо ключи, вам также следует это отрицать.
Подробнее о наборе результатов оператора EXPLAIN