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




MySQL.RU - Webboard



Вернуться
подозрительно долго работает селект (Po4emu4ka) 17/10/2005 - 17:18:18
      Re: подозрительно долго работает селект (Dinky) 17/10/2005 - 20:34:44
      Re: подозрительно долго работает селект (Dinky) 17/10/2005 - 20:47:15
      Re: подозрительно долго работает селект (Po4emu4ka) 17/10/2005 - 23:01:21
      Re: подозрительно долго работает селект (Dinky) 17/10/2005 - 23:23:27
      Re: подозрительно долго работает селект (Po4emu4ka) 18/10/2005 - 11:09:23
      Re: подозрительно долго работает селект (Po4emu4ka) 18/10/2005 - 17:37:49
      Re: подозрительно долго работает селект (Dinky) 18/10/2005 - 19:05:12
      Re: подозрительно долго работает селект (Po4emu4ka) 19/10/2005 - 10:26:32
      Re: подозрительно долго работает селект (Dinky) 19/10/2005 - 19:23:03
      Re: подозрительно долго работает селект (Po4emu4ka) 20/10/2005 - 13:31:14

> Original message text:
> From: Po4emu4ka - 17/10/2005 - 17:18:18
> Subject:подозрительно долго работает селект
> -----------------
> Странно долго работает SELECT или так и должно???
>
> Есть две таблички:
> 20000 записей.
> CREATE TABLE `tbl_tmp` (
> `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
> `num` decimal(12,0) NOT NULL default '0',
> `im` char(20) NOT NULL default '',
> KEY `num_idx` (`num`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>
> и
>
> 1 миллион записей.
> CREATE TABLE `tbl` (
> `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
> `num` decimal(12,0) NOT NULL default '0',
> `im` char(20) NOT NULL default '',
> UNIQUE KEY `num_idx` (`num`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>
> Запускаю запрос:
> SELECT tbl_tmp.im AS new_im, tbl_tmp.num, tbl.im AS old_im FROM tbl_tmp, tbl WHERE tbl_tmp.num = tbl.num;
>
> Выполняется 4 минуты. :-/ По-моему, очень долго, ведь поиск по индексированному полю! Или я неправ?
>


From: Po4emu4ka - 18/10/2005 - 11:09:23
Subject:подозрительно долго работает селект
-----------------
mysql> explain select tbl_tmp.im AS new_im, tbl_tmp.num, tbl.im AS old_im FROM tbl_tmp LEFT JOIN tbl ON (tbl_tmp.num = tbl.num);
+----+-------------+-----------------+--------+---------------+------------+---------+-------------------------------+-------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------------+--------+---------------+------------+---------+-------------------------------+-------+-------+
| 1 | SIMPLE | tbl_tmp | ALL | NULL | NULL | NULL | NULL | 19996 | |
| 1 | SIMPLE | tbl | eq_ref | num_idx | num_idx | 13 | tstdb.tbl_tmp.num | 1 | |
+----+-------------+-----------------+--------+---------------+------------+---------+-------------------------------+-------+-------+
2 rows in set (0.00 sec)
Селект отрабатывает 5 минут!!! Выдаёт то, что и хотелось (из tmp таблицы записи (в которой записей 20000), совпавшие по связывающему полю)

mysql> explain select tbl_tmp.im AS new_im, tbl_tmp.num, tbl.im AS old_im FROM tbl_tmp RIGHT JOIN tbl ON (tbl_tmp.num = tbl.num);
+----+-------------+-----------------+------+---------------+------------+---------+---------------------------+---------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------------+------+---------------+------------+---------+---------------------------+---------+-------+
| 1 | SIMPLE | tbl | ALL | NULL | NULL | NULL | NULL | 1091191 | |
| 1 | SIMPLE | tbl_tmp | ref | num_idx | num_idx | 13 | tstdb.tbl.num | 10 | |
+----+-------------+-----------------+------+---------------+------------+---------+---------------------------+---------+-------+
Селект отрабатывает 41 секунду и выдаёт весь миллион записей, естественно, где первое и второе поле по большей части NULL.

Ок, я конечно в программе могу их скипнуть, пофиг, но откуда такая разница во времени обработке? :-/
key_buffer_size 256mb - этого более чем достаточно...


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

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

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



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