SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.02.2011 18:27:32

pleomax
Участник
Зарегистрирован: 03.02.2011
Сообщений: 2

медленный запрос объединения к таблицам MyISAM и FEDERATED

Есть база MySQL которая лежит на локальном сервере. В этой базе создаю ссылку на удаленную таблицу webSMS с помощью движка FEDERATED. Все работает отлично.

-------------------------------------------------------------------------
Создаю запрос к прилинкованной таблице:

SELECT *
FROM `webSMS`
LIMIT 0 , 30

Отображает строки 0 - 1 (2 всего, запрос занял 0.2713 сек.) Все супер...

-------------------------------------------------------------------------
Далее, создаю запрос в локальной таблице:

SELECT *
FROM `localUsers`
LIMIT 0 , 30

Отображает строки 0 - 29 (307 всего, запрос занял 0.0011 сек.) Тоже все гуд...

-------------------------------------------------------------------------
Теперь создаю запрос к обем таблицам:

SELECT localUsers.NameCustomer, webSMS.number, webSMS.status, webSMS.id
FROM localUsers
INNER JOIN webSMS ON localUsers.id = webSMS.user_id
LIMIT 0 , 30

результат запроса:
Отображает строки 0 - 1 (2 всего, запрос занял 45.2847 сек.!!!!)

Вопрос, ПОЧЕМУ ТАК ДОЛГО ВЫПОЛНЯЕТСЯ ЗАПРОС!!!!!!!!!???????????
--------------------------------------------------------------------------

Неактивен

 

#2 03.02.2011 19:03:11

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: медленный запрос объединения к таблицам MyISAM и FEDERATED

Попробуйте явно указать порядок использования таблиц:
SELECT SQL_STRAIGHT_JOIN ... FROM webSMS JOIN localUSERS ...

Оптимизатор не умеет хорошо оценивать скорость работы сетевого
хранилища, и поэтому лучше ставить сначала полнотекстовый скан
по нему (один раз достать по сети), а потом присоединять локальные
данные, вместо того, чтобы достать локальные данные и на каждую
строку доставать полный скан сетевой таблички.

Неактивен

 

#3 04.02.2011 09:45:33

pleomax
Участник
Зарегистрирован: 03.02.2011
Сообщений: 2

Re: медленный запрос объединения к таблицам MyISAM и FEDERATED

написал запрос следующим образом:
---------------------------------------------------------------------------------------------
SELECT STRAIGHT_JOIN localUsers.NameCustomer, webSMS.number, webSMS.status, webSMS.id
FROM webSMS
INNER JOIN localUsers ON webSMS.user_id = localUsers.id
LIMIT 0 , 30
--------------------------------------------------------------------------------------------

Отображает строки 0 - 2 (3 всего, запрос занял 0.6445 сек.) Все отлично работает!!!!!!!!!!

Спасибо о наимудрейший paulus!!!  cool

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson