Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
оптимизация таблицы из 18 000 000 записей (lexey2006.90) 19/06/2011 - 09:31:54
      Re: оптимизация таблицы из 18 000 000 записей (Akina) 20/06/2011 - 10:17:21

> Original message text:
> From: lexey2006.90 - 19/06/2011 - 09:31:54
> Subject:оптимизация таблицы из 18 000 000 записей
> -----------------
> CREATE TABLE IF NOT EXISTS `gate_spo_price` (
> `id` bigint(16) NOT NULL AUTO_INCREMENT,
> `date_from` date NOT NULL,
> `date_to` date NOT NULL,
> `country` int(11) NOT NULL,
> `city` int(11) NOT NULL,
> `hotel` int(11) NOT NULL,
> `operator` int(11) NOT NULL,
> `star` int(11) NOT NULL,
> `room` int(11) NOT NULL,
> `pansion` int(11) NOT NULL,
> `depature_from` int(11) NOT NULL,
> `depature_to` int(11) NOT NULL,
> `depature_date` date NOT NULL,
> `days` int(11) NOT NULL,
> `price` int(11) NOT NULL,
> `status` tinyint(4) NOT NULL,
> `chld` int(11) NOT NULL,
> `age1` int(11) NOT NULL,
> `age2` int(11) NOT NULL,
> `age3` int(11) NOT NULL,
> `age4` int(11) NOT NULL,
> PRIMARY KEY (`id`),
> KEY `key1` (`depature_date`),
> KEY `key2` (`depature_date`,`price`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=40039143195 ;
>
> Запрос выполняется довольно быстро, но бывают запросы, вешающие выборку, например:
> select * from gate_spo_price USE INDEX (seach_sort) where country = '315' AND room = '23' AND depature_date >= '2011-06-27' AND depature_date <= '2011-07-3' AND status=0 AND chld=0 ORDER BY price ASC limit 200;
> 1. Сделал партицирование по дате (по 5 дней, т.к. можно выбирать промежутки по 5 дней)
> 2. Пытал всевозможные ключи - та же лажа
>
> запрос со всевозможными полями по которым может идти выборка:
> [17.06.2011 19:09:12] леша: select * from gate_spo_price where country = '309' AND city = '313' AND room = '26' AND pansion = '35' AND star = '41' AND days >= '2' AND days <= '20' AND price <= '3333.3333333333' AND depature_date >= '2011-06-20' AND depature_date <= '2011-06-30' AND operator='37410' AND status=0 AND chld=0 ORDER BY price ASC limit 200;
>
> Присылаю дамп таблицы - можно пробовать на ней самой.
> ftp://piklya.com/tmp/ файл sumpceudbpeh96cmh8oqrmsum6.7z
>


From: Akina - 20/06/2011 - 10:17:21
Subject:оптимизация таблицы из 18 000 000 записей
-----------------
> USE INDEX (seach_sort)

В структуре таблицы такого индекса нет.

По каждому отдельному полю укажите:

1) Ищется всегда строгое совпадение, всегда больше-меньше, всегда between, возможна комбинация;
2) По каждому типу отбора - прогнозируемую селективность.

Также покажите все настройки INNODB.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
38611



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |