Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выборка из большых таблиц, объеденение 4 таблиц 
:(
    Опции темы
YuKo
Дата 27.4.2011, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



Здравствуйте.
Запрос
Код

SELECT * FROM `tab1` 
left join `tab2` 
on
`tab1`.`kod1`=`tab2`.`kod2`
left join `tab3`
on
`tab1`.`kod11`=`tab3`.`kod3`
left join `tab4`
on
`tab1`.`kod111`=`tab4`.`kod4`  
order by(`id`)

В таблице tab1 около 20 тис записей, tab2 около 20 тис записей, tab3,4 около 5 записей
Если запрос прогнать на mysql то выполняется около 6 минут
вобще мне нужно просто количество строк общей таблицы
если $num_rows = mysql_num_rows($sql); будет ли этот запрос выполняться так же долго?  если да то помогите оптимизировать запрос

PM MAIL   Вверх
YuKo
Дата 27.4.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



И еще все таблицы в MyISAM возможно ли что эфективней и быстрей будет работать
Код

$result = mysql_query("SELECT count(*) FROM `tab1` 
left join `tab2` 
on
`tab1`.`kod1`=`tab2`.`kod2`
left join `tab3`
on
`tab1`.`kod11`=`tab3`.`kod3`
left join `tab4`
on
`tab1`.`kod111`=`tab4`.`kod4`  
 ");
$row1 = mysql_fetch_row($result);
  $total = $row1[0];

?????
PM MAIL   Вверх
solenko
Дата 27.4.2011, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



Цитата(YuKo @  27.4.2011,  12:19 Найти цитируемый пост)
И еще все таблицы в MyISAM возможно ли что эфективней и быстрей будет работать

Вне зависимости от engine -- эффективнее.

Код

SELECT count(*) FROM `tab1` 
left join `tab2` 
on
`tab1`.`kod1`=`tab2`.`kod2`
left join `tab3`
on
`tab1`.`kod11`=`tab3`.`kod3`
left join `tab4`
on
`tab1`.`kod111`=`tab4`.`kod4`  

Вам точно нужен LEFT JOIN, или таки можно INNER?
Индексы по полям для join есть?


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
YuKo
Дата 27.4.2011, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



solenko, Можно Inner, это повысит скорость?
PM MAIL   Вверх
solenko
Дата 27.4.2011, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



скорее всего да. Но вообще-то, когда речь идет о оптимизации запросов, то это
1. не в этот раздел, а в базы
2. нужно приводить SHOW CREATE TABLE и EXPLAIN запроса


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.