phpMyAdmin зависает при выполнении заведомо исправного запроса (локальный WAMP-сервер) - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь запустить следующий запрос из phpMyAdmin (на локальном сервере WAMP):

SELECT  table2.AreaName, table2.Dialcode
FROM    table2
LEFT JOIN
master
ON      master.Dialcode = table2.Dialcode
WHERE   master.Dialcode IS NULL

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

Теперь я пытаюсь (тот же запрос) на моих "реальных" таблицах с примерно 20000 записями в каждой, и я нажимаю GO. В течение 5-6 секунд у меня появляется «Загрузка3», появляющаяся посередине, но затем ничего не происходит, никакого результата, ничего загружается ...

Есть идеи?

EDIT:

ПОКАЗАТЬ ИНДЕКСЫ ОТ МАСТЕРА

Таблица Non_unique Key_name Seq_in_index Column_name Колличество Количество элементов Sub_part Упакованный нулевой Index_type

мастер 1 Телефонный код 1 Телефонный код A 18731 NULL NULL YES BTREE

И то же самое для таблицы2. Я уже создал индексы таблиц на DialCode, нажав на кнопку INDEX в PhpMyadmin.

РЕШЕНИЕ: На самом деле запрос работает быстро, это обработка, которую я выполняю, после чего требуется время.

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Я только что создал очень простой макет вашего сценария, и он возвращается за 0,03 с 1M записей в таблице 2 и 70 000 записей в master. Возможно, вам нужно добавить индексы в поля, используемые для объединения -

ALTER TABLE `table2`
    ADD INDEX `IX_table2_dialcode`(`Dialcode`);

ALTER TABLE `master`
    ADD INDEX `IX_master_dialcode`(`Dialcode`);
0 голосов
/ 21 августа 2012

Ваша «настоящая» таблица содержит около 20000 записей. Это заставляет phpmyadmin «зависать» во время работы SQL.

Чтобы предотвратить это, ограничьте свой набор результатов. то есть просто добавьте limit 0,5 к SQL, который вы пытались. Это приведет к получению только первых 5 строк набора результатов.

...