MySQL Forums
Forum List  »  Russian

JOIN таблицы вызывает FULLSCAN несмотря на индексы
Posted by: Denis
Date: April 19, 2007 11:47AM

Помогите разобраться, есть такая проблема:
Есть две таблицы
CREATE TABLE `items` (
  `id` int(11) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM;
и
CREATE TABLE `rates` (
  `id` int(11) unsigned NOT NULL,
  `rate` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM;

И нехитрый запрос:
SELECT `rate` FROM `rates` LEFT JOIN `items` USING (`Id`)
Иногда выполнение для ~30000 записей в обоих таблицах занимает больше 2-х секунд,
EXPLAIN показывает следующее:
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	rates	ALL					33168	""
1	SIMPLE	items	eq_ref	PRIMARY,id	PRIMARY	4	mydreams.rates.id	1	Using index
то есть имеем полный перебор,
если создать составной индекс из полей `rates`.`id` и `rates`.`rate` то получаем:
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	rates	index		rateid	8		33168	Using index
1	SIMPLE	items	eq_ref	PRIMARY,id	PRIMARY	4	mydreams.rates.id	1	Using index
что тоже не очень радует,
с чем может быть связано, как исправить?
Столкнулся на MySQL 5.0.22 под win32 и на MySQL 5.0.26 под OpenSuSE

Options: ReplyQuote


Subject
Views
Written By
Posted
JOIN таблицы вызывает FULLSCAN несмотря на индексы
6475
April 19, 2007 11:47AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.