MySQL присоединиться очень медленно - PullRequest
2 голосов
/ 21 июля 2010

У меня есть две таблицы (MYISAM)

create table A (email varchar(50));
create table B( email varchar(50) key 'email' (email));

В таблице A есть записи по 130 КБ В таблице B есть записи по 20 КБ

почему этот оператор SQL занимает очень много времени (более двух минут,тогда я прервал запрос по Ctrl + C) Заявление:

select count(*) from user A, tmp B where A.email=B.email;

Спасибо

Ответы [ 3 ]

2 голосов
/ 21 июля 2010

Я думаю, оптимизатору запросов больше нечего делать.Почему бы вам не попробовать определить индексы для столбцов электронной почты.

0 голосов
/ 21 июля 2010

Если в таблице A есть поле int ID, то таблица B должна хранить этот идентификатор, а не снова сохранять строку электронной почты. Это уменьшит размер БД и, вместе с индексами, обеспечит гораздо более высокую скорость запроса, чем когда-либо вам даст строка.

0 голосов
/ 21 июля 2010

Как правило, объединение строк более затратно, чем объединение с более короткими типами данных, такими как int.

Вы можете ускорить этот запрос, убедившись, что оба столбца электронной почты проиндексированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...