Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Оптимизация по индексам с сортировкой по Where
 
 автор: tim313   (12.08.2009 в 07:36)   письмо автору
 
 

Недавно зашел в состояние моей 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     

  Ответить  
 
 автор: Trianon   (12.08.2009 в 08:30)   письмо автору
 
   для: tim313   (12.08.2009 в 07:36)
 

>Недавно зашел в состояние моей Mysql БД.
>Посмотретл так и немного удивился некоторым значениям:
>
>Большинство моих запросов состоят из вида:
>select * from table where id='число';

Очевидно, это не самый частый вид запроса.

>Непойму что я неправильно сортирую?

У Вас в нем вообще сортировки нет.
А губит Вас наверное ORDER BY n ... LIMIT a, b

  Ответить  
 
 автор: tim313   (12.08.2009 в 16:11)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Trianon   (12.08.2009 в 18:39)   письмо автору
 
   для: tim313   (12.08.2009 в 16:11)
 

Таких тоже много но все же 1х я думаю больше.
хотя лимит у меня расчитан примерно на 12-15 строк, незнаю засчитывает ли он каждую строку за запрос или нет.

Не за запрос, а за извлечение.
За извлечение он засчитывает не каждую выданную строку, а каждую добавленную.
А их - те самые 10-20 тысяч на запрос.

  Ответить  
 
 автор: Trianon   (12.08.2009 в 18:40)   письмо автору
 
   для: tim313   (12.08.2009 в 16:11)
 

>где id - Primery key
PRIMARY

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования