Базовый MySQL SELECT Query работает очень медленно - PullRequest
0 голосов
/ 22 декабря 2011

Я связал представление MySQL с MS Access через ODBC, но он работает очень медленно.

Это простой выбор, который сравнивает два других выбора, чтобы найти записи, уникальные для первого выбора.

SELECT `contacts_onlinedonors`.`contactkey` AS `contactkey`
FROM   (`hal9k3-testbed`.`contacts_onlinedonors`
    LEFT JOIN `hal9k3-testbed`.`contacts_offlinedonors`
      ON(( `contacts_onlinedonors`.`contactkey` =
         `contacts_offlinedonors`.`contactkey` )))
WHERE  Isnull(`contacts_offlinedonors`.`contactkey`)  

В медленном журнале запросов указывается, что после проверки 1,5 миллиарда он возвращает 34 000 строк.В базовой таблице только 200 000.Что за хрень?

Поле "ключ контакта", очевидно, является индексом таблицы.

1 Ответ

2 голосов
/ 22 декабря 2011

Первое, что нужно сделать, это «объяснить» этот запрос. Смотри http://dev.mysql.com/doc/refman/5.0/en/explain.html

Идея состоит в том, чтобы выяснить, что делает сервер MySQL, какие индексы он использует, и добавлять индексы, где это необходимо, или переписать ваш запрос, чтобы он мог использовать индексы.

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