[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна помощ с подбором индекса на платной основе
Страницы: 1, 2, 3, 4, 5, 6, 7
Zzepish
ИНСИ
Я пробовал полнотекстовой оиск. Тут он не прокатит. Сдесь catfull идет одним словом, а не как разные слова
Serg86
Цитата
Смени таблицу на MyISAM. Скорость увеличилась в 5 раз

Впринципе ничего не поменялось
Guest
Когда лайк такой как в запросе
like 'Zhivotnye-pticy-ryby-tovary-dlya-zhivotnyh%'

то тут все нормально, индексы используются. Полнотекстовый поиск тут можно не городить.

Почитай как MySQL оптимизирует ORDER BY.

Ну и попробуй сделать индекс (если еще не сделал):
CREATE INDEX idx_raised_date_add ON site_db(raised DESC, date_add DESC);

Zzepish
Serg86
А вот это странно. Ты мне точно скинул структуру базы, которая у тебя на сайте?
Serg86
Цитата
А вот это странно. Ты мне точно скинул структуру базы, которая у тебя на сайте?

Да точно, слил и скинул
Serg86
Цитата
Ну и попробуй сделать индекс (если еще не сделал):
CREATE INDEX idx_raised_date_add ON site_db(raised DESC, date_add DESC);


Попробывал, вот explain
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY d ALL NULL NULL NULL NULL 298581 Using where; Using filesort
2 DEPENDENT SUBQUERY sait_comments ALL NULL NULL NULL NULL 1 Using where

Короче не видит он его среди подходящих ключей
Guest
А там случайно нет NULL-ов среди raised или date_add?
А то в доках пишут
Цитата
Ниже приведены некоторые случаи, когда MySQL не может использовать индексы
...
Столбцы индекса могут содержать значения NULL, и используется ORDER BY ... DESC. Это объясняется тем, что в SQL значения NULL всегда сортируются в первую очередь, независимо от того, используется DESC или нет.
Serg86
Цитата
А там случайно нет NULL-ов среди raised или date_add?
А то в доках пишут
Цитата
Ниже приведены некоторые случаи, когда MySQL не может использовать индексы
...
Столбцы индекса могут содержать значения NULL, и используется ORDER


Есть щас поправлю.

Но меня больше смущает другой пункт в доках
Цитата
Ниже приведены некоторые случаи, когда MySQL не может использовать индексы, чтобы выполнить ORDER BY (обратите внимание, что MySQL тем не менее будет использовать индексы, чтобы найти строки, соответствующие выражению WHERE):

    Сортировка ORDER BY делается по нескольким ключам: SELECT * FROM t1 ORDER BY key1,key2


Ведь это мой случай или я ошибаюсь?
Serg86
хотя тутже ниже приведен пример с двумя ключами
Смешиваются ASC и DESC. SELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 ASC
Zzepish
Serg86
Странно, что у тебя смена типа таблицы не сработала.
У меня:
InnoDB: http://www.zimagez.com/full/9880e051eff372...a103d1bcdef.php
MyISAM: http://www.zimagez.com/full/ddc25f2a8e4386...2b9b716fa68.php

Один и тот-же запрос
Guest
Когда смешиваются DESC и ASC то индексы точно использоваться не будут.

Вот это интересно. Работает такое:
SELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 DESC


Я так понимаю, это когда key_part1 и key_part2 части составного ключа. Т.е. если такой индекс сделать
CREATE INDEX idx_raised_date_add ON site_db(raised DESC, date_add DESC);
то raised и date_add как раз получаются частями и теоретически должно взлететь.
Zzepish
Guest
Время запроса не поменялось
Serg86
Цитата
то raised и date_add как раз получаются частями и теоретически должно взлететь.

Должно но к сожалению не работает, в explain ничего не поменялось, NULL убрал везде, пустых строк тоже нет
Serg86
Цитата
Странно, что у тебя смена типа таблицы не сработала.

Да нет ничего странного, я же говорил что это во первых гемор, так как в конфиг мускула изменения под MyISAM надо вносить, во вторых не суть проблемы, индекс и там и там должен работать, главное правильно прописать, а тип таблицы я всегда поменять успею.
Serg86
Цитата
Странно, что у тебя смена типа таблицы не сработала.

Кстати тебя не смутило что мускул 0 строк вернул тебе на MyISAM.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.