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




MySQL.RU - Webboard



Вернуться
Оптимизация запроса для таблицы >700k записей (Олег) 29/10/2009 - 21:01:36
      Re: Оптимизация запроса для таблицы >700k записей (Елена) 30/10/2009 - 13:04:48
      Re: Оптимизация запроса для таблицы >700k записей (Олег) 03/11/2009 - 02:42:12

> Original message text:
> From: Олег - 29/10/2009 - 21:01:36
> Subject:Оптимизация запроса для таблицы >700k записей
> -----------------
> Версия mysql: 5.0.45
>
> my.ini:
> [mysqld]
> default-storage-engine=MyISAM
> sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
> max_connections=100
> query_cache_size=0
> table_cache=256
> tmp_table_size=18M
> thread_cache_size=8
> #*** MyISAM Specific options
> myisam_max_sort_file_size=100G
> myisam_sort_buffer_size=35M
> key_buffer_size=25M
> read_buffer_size=64K
> read_rnd_buffer_size=256K
> sort_buffer_size=256K
>
> имеется таблица учета визитов:
>
> create table visit (
> uid bigint not null auto_increment,
> ip bigint,
> pageref bigint,
> catref bigint,
> modelref bigint,
> customref bigint,
> visitdate datetime,
> osbaseid integer,
> browserid integer,
> browserversionmin integer,
> browserversionmaj varchar(255),
> java bit,
> javascript bit,
> backvisitid bigint,
> host varchar(255),
> referer varchar(255),
> refererbase varchar(255),
> mcref bigint,
> requri varchar(255),
> primary key (uid)
> ) CHARSET = utf8;
>
>
> в таблице сейчас находится чуть больше 700тыс. записей
>
> задача:
> необходимо выбрать из таблицы данные об уникальных посещениях по разным visit.catref за определенную дату.
>
> запрос:
> select count(this_.ip) as HITS, count(distinct this_.ip) as UNIQ, cast(visitdate as date) as VISIT_DATE, this_.catref as REF from visit this_ where cast(visitdate as date)='2009-10-10' and this_.catref is not null group by VISIT_DATE, REF;
>
> выполняется ~1300мс.
> и запрос без ограничения по дате (за все даты) выполняется по времени примерно также.
>
> пробовал добавить новую колонку visitday DATE, чтобы избежать наличия cast(.. as date), но это только замедлило запрос.
>
> добавление индексов на visitdate, pageref не помогло.
>
> подскажите как можно оптимизировать данный запрос/таблицу?
>


From: Елена - 30/10/2009 - 13:04:48
Subject:Оптимизация запроса для таблицы >700k записей
-----------------
Я знаю только один ключ, который mysql готов здесь использовать: KEY(visitdate,catref,ip)
Понятия не имею, ускорит ли это выполнение запроса.

Если дата действительно определенная, то можно попробовать where visitdate>='20091010000000' and visitdate<'20091011000000' c ключом key(visitdate). По идее, должно ускориться. По крайней мере mysql обещает использовать этот ключ =)





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

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

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



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