SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.02.2013 16:45:03

Leon
Участник
Зарегистрирован: 25.02.2013
Сообщений: 1

помогите разобраться с ключами

Привет всем MySQL умельцем.

У меня такой вопрос. Есть таблица в которой несколько миллионов записей. Вот ее show create table:

CREATE TABLE IF NOT EXISTS `install_request` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `md` char(32) NOT NULL,
  `mac` char(12) NOT NULL,
  `system_id` char(32) NOT NULL,
  `ip2long` int(11) unsigned NOT NULL,
  `campaign_id` int(11) NOT NULL,
  `carrier_app_id` int(11) NOT NULL COMMENT 'application id from request',
  `time_start` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'current timestamp - installation_duration from request',
  `time_end` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'insertion time (installation end)',
  `installation_status` smallint(6) NOT NULL DEFAULT '0' COMMENT 'see status',
  `country_code` char(3) DEFAULT NULL COMMENT 'not set on insert???',
  `payout_rate` smallint(6) NOT NULL DEFAULT '0',
  `saving` smallint(5) unsigned NOT NULL DEFAULT '0',
  `not_shared_rate` int(10) unsigned NOT NULL DEFAULT '0',
  `shared_rate` int(10) unsigned NOT NULL DEFAULT '0',
  `must_pay` tinyint(1) NOT NULL DEFAULT '0',
  `pay_status` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `over_quota` tinyint(1) NOT NULL DEFAULT '0',
  `comp_already_credited` int(10) unsigned NOT NULL DEFAULT '0',
  `tracking_id` text NOT NULL,
  `version` varchar(20) NOT NULL,
  `cmd` text,
  `comment` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK_install_request_md` (`md`),
  KEY `mac` (`mac`,`ip2long`),
  KEY `system_id` (`system_id`),
  KEY `campaign_id` (`campaign_id`),
  KEY `time_end` (`time_end`),
  KEY `pay_status` (`pay_status`),
  KEY `country_code` (`country_code`,`time_end`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=29852681 ;

Делаю такой запрос:
SELECT *
FROM install_request
WHERE time_end BETWEEN TIMESTAMP(  '2013-02-17 00:00:00' ) AND TIMESTAMP(  '2013-02-24 23:59:59' )

Не пользуется ключами. Вот Explain:
id    select_type    table    type    possible_keys    key    key_len    ref    rows    Extra
1    SIMPLE    i    ALL    time_end    NULL    NULL    NULL    29852689    Using where

Если делаю подобную таблицу и копирую туда всего 1000 записей, то ключи работают ...

Неактивен

 

#2 25.02.2013 21:00:04

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: помогите разобраться с ключами

MySQL прежде чем использовать индекс, оценивает - будет ли это эффективнее, нежели просто считать с диска записи последовательно. Иногда ошибается в оценке, но вроде не очень часто.
Поэксперементируйте - задайте интервал временной в запросе поменьше чем неделя - использование индекса должно начаться. Или если force index задать в запросе.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson