Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Очень долгая сортировка если не указать USE INDEX / 17 сообщений из 17, страница 1 из 1
05.03.2015, 15:00:35
    #38896095
NevilDG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
		SQL_NO_CACHE
			FPS0.IBLOCK_ELEMENT_ID as ID
		FROM
			b_iblock_element_prop_s2 FPS0

		WHERE
			(FPS0.PROPERTY_8 = '173032' OR FPS0.PROPERTY_9 = '173032')
		ORDER BY FPS0.IBLOCK_ELEMENT_ID desc
		LIMIT 0, 10

6.6779739857


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
		SQL_NO_CACHE
			FPS0.IBLOCK_ELEMENT_ID as ID
		FROM
			b_iblock_element_prop_s2 FPS0
		USE INDEX(PRIMARY)
		WHERE
			(FPS0.PROPERTY_8 = '173032' OR FPS0.PROPERTY_9 = '173032')
		ORDER BY FPS0.IBLOCK_ELEMENT_ID desc
		LIMIT 0, 10

0.0028510094

Подскажите пожалуйста, как так может быть?
Mysql не знает, что нужно использовать PRIMARY индекс?
...
Рейтинг: 0 / 0
05.03.2015, 15:14:01
    #38896126
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
Значит не знает...
EXPLAIN SELECT...что показывает?
...
Рейтинг: 0 / 0
05.03.2015, 15:16:09
    #38896128
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
О, битрикс :)
И какой запрос коротенький :)

По делу - попробуйте выполнить оптимизацию таблицы.
...
Рейтинг: 0 / 0
05.03.2015, 15:18:02
    #38896132
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
NevilDG,

и покажите DDL это таблицы полностью.
...
Рейтинг: 0 / 0
05.03.2015, 15:48:03
    #38896189
NevilDG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
Угу, он самый)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Array
(
    [id] => 1
    [select_type] => SIMPLE
    [table] => FPS0
    [type] => index_merge
    [possible_keys] => PROP_8_INDEX,PROP_9_INDEX,PROP_8_9_INDEX
    [key] => PROP_8_INDEX,PROP_9_INDEX
    [key_len] => 5,5
    [ref] => 
    [rows] => 1712980
    [Extra] => Using union(PROP_8_INDEX,PROP_9_INDEX); Using where; Using filesort
)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Array
(
    [id] => 1
    [select_type] => SIMPLE
    [table] => FPS0
    [type] => index
    [possible_keys] => 
    [key] => PRIMARY
    [key_len] => 4
    [ref] => 
    [rows] => 10
    [Extra] => Using where
)

Оптимизация на высоконагруженном проекте не убьет базу?)
...
Рейтинг: 0 / 0
05.03.2015, 15:52:03
    #38896199
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
NevilDGОптимизация на высоконагруженном проекте не убьет базу?)Убить - не убьет, но таблицу заблокирует на все время операции.
Если сомневаетесь, то сделайте это в часы наименьшей нагрузки, например, ночью.
...
Рейтинг: 0 / 0
05.03.2015, 15:54:21
    #38896203
NevilDG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
Больше никак не сообщить или использовать вручную use_index() ?
...
Рейтинг: 0 / 0
05.03.2015, 16:03:01
    #38896227
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
А чем смущает прямой хинт в запросе, если он гарантированно не тормозит запрос? Тем более если он реально этот запрос ускоряет?
...
Рейтинг: 0 / 0
05.03.2015, 16:03:39
    #38896231
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
NevilDGБольше никак не сообщить или использовать вручную use_index() ?Пока еще не очевидно, что этим вообще стоит заниматься.
Мы еще ждем DDL и планы обоих вариантов запросов.
...
Рейтинг: 0 / 0
05.03.2015, 16:04:57
    #38896234
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
AkinaА чем смущает прямой хинт в запросеОтвечу за топикстартера - тем, что его очень непросто подсунуть в реальный запрос.
...
Рейтинг: 0 / 0
05.03.2015, 16:06:18
    #38896239
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
И, кстати, есть подозрение, что хинт помогает только при некоторых значениях констант, т.к. они лежат в области меньших значений PK.
...
Рейтинг: 0 / 0
05.03.2015, 16:15:59
    #38896254
NevilDG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
Хм, EXPLAIN я же выше написал,

DDL - структура?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE IF NOT EXISTS `b_iblock_element_prop_s2` (
  `IBLOCK_ELEMENT_ID` int(11) NOT NULL,
...
  `PROPERTY_8` int(11) DEFAULT NULL,
  `PROPERTY_9` int(11) DEFAULT NULL,
...
  PRIMARY KEY (`IBLOCK_ELEMENT_ID`),
  KEY `PROP_8_INDEX` (`PROPERTY_8`),
  KEY `PROP_9_INDEX` (`PROPERTY_9`),
  KEY `PROP_8_9_INDEX` (`PROPERTY_8`,`PROPERTY_9`),
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
...
Рейтинг: 0 / 0
05.03.2015, 16:24:25
    #38896266
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
NevilDGEXPLAIN я же выше написал,Это какие-то PHP-шные коды. Например, я их не понимаю. Хотя как-нибудь разберусь...

Сколько записей в таблице? Сколько записей выдаст запрос, если убрать LIMIT?
И непонятно, зачем сортировка по первичному ключу? там же, фактически, случайные данные...
...
Рейтинг: 0 / 0
06.03.2015, 12:33:22
    #38897040
NevilDG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
Первый:


Второй:


Без лимит кол-во записей: 882686
Всего в таблице: 26094803

Первичный ключ - это id записи
...
Рейтинг: 0 / 0
06.03.2015, 13:42:26
    #38897162
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
NevilDGПервичный ключ - это id записиА сортировать-то по нему зачем?
...
Рейтинг: 0 / 0
06.03.2015, 14:39:41
    #38897259
NevilDG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
Выводится список с последней до первой записи по 10 записей
...
Рейтинг: 0 / 0
06.03.2015, 15:41:00
    #38897365
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очень долгая сортировка если не указать USE INDEX
NevilDGВыводится список с последней до первой записи по 10 записейПоследней/первой по какому критерию? Обычно это дата, цена, наименование и т.п. Причем тут первичный ключ?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Очень долгая сортировка если не указать USE INDEX / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]