|
|
|
| Недавно зашел в состояние моей Mysql БД.
Посмотретл так и немного удивился некоторым значениям:
Handler_read_rnd 390 M
Handler_read_rnd_next 3,341.20 M
|
Больше всего мне непонравилось рядом описания возле этих параметров:
Handler_read_rnd-Количество запросов, на чтение строки, основанных на ее позиции. Большое значение переменной может быть обусловлено частым выполнением запросов использующих сортировку результата, выполнением большого числа запросов требующих полного сканирования таблиц, наличием объединений не использующих индексы надлежащим образом.
Handler_read_rnd_next-Количество запросов на чтение следующей строки из файла данных. Данное значение будет высоким, при частом сканировании таблиц. Обычно это означает, что таблицы не проиндексированы надлежащим образом или запросы не используют преимущества индексов.
Насколько я понял не использование преимущества индексов утежеляет эти запросы.
Хотя мне казалось всегда что я как раз по ним и сортирую.
Большинство моих запросов состоят из вида:
select * from table where id='число';
|
где id у меня PRIMERY KEY
может не нужно кавычки ставить а писать id=число ?
Таблицы по 10-20тыс строк.
Нашел и параметр который считает что запросы были сделаны по индексу:
Handler_read_key 4,238 k Количество запросов на чтение строк, построенных на значении ключа. Большое значение переменной говорит о том, что запросы и таблицы проиндексированы надлежащим образом.
Но это значени гараздо меньше чем сортировка не по индексу.
Непойму что я неправильно сортирую?
Вот моя таблица:
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
game 0 PRIMARY 1 id A 12138 NULL NULL BTREE
|
| |
|
|
|
|
|
|
|
для: tim313
(12.08.2009 в 07:36)
| | >Недавно зашел в состояние моей Mysql БД.
>Посмотретл так и немного удивился некоторым значениям:
>
>Большинство моих запросов состоят из вида:
>select * from table where id='число';
Очевидно, это не самый частый вид запроса.
>Непойму что я неправильно сортирую?
У Вас в нем вообще сортировки нет.
А губит Вас наверное ORDER BY n ... LIMIT a, b | |
|
|
|
|
|
|
|
для: Trianon
(12.08.2009 в 08:30)
| | >У Вас в нем вообще сортировки нет.
>А губит Вас наверное ORDER BY n ... LIMIT a, b
Таких тоже много но все же 1х я думаю больше.
хотя лимит у меня расчитан примерно на 12-15 строк, незнаю засчитывает ли он каждую строку за запрос или нет.
И другой вопрос:
есть тиблицы на пример 20000 строк.
Во сколько такой запрос?:
select * from table limit $1,$2;
|
работает быстрея чем такой?:
select * from table order by $7*$8 desc limit $1,$2;
|
Насколько я понял 1й вид запроса использует преимущества индекса и должен работать с десятки а то и сотни раз быстрея чем 2й, который сортирует всю таблицу.
И еще будет ли использовано преимущество индексов в таком виде запроса?:
select * from table order by id desc limit $1,$2;
|
где id - Primery key | |
|
|
|
|
|
|
|
для: tim313
(12.08.2009 в 16:11)
| | Таких тоже много но все же 1х я думаю больше.
хотя лимит у меня расчитан примерно на 12-15 строк, незнаю засчитывает ли он каждую строку за запрос или нет.
Не за запрос, а за извлечение.
За извлечение он засчитывает не каждую выданную строку, а каждую добавленную.
А их - те самые 10-20 тысяч на запрос. | |
|
|
|
|
|
|
|
для: tim313
(12.08.2009 в 16:11)
| | >где id - Primery key
PRIMARY | |
|
|
|