Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Как оптимизировать запрос к БД?

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день
Подскажите как можно упростить и оптимизировать такой запрос?

Код:
SELECT * ,  
   my_marka_avto.name AS marka_avto,
   my_ad.id AS id_avto,
   my_model_avto.name AS model_avto,
   my_dvigatel.name AS dvigatel,
   my_toplivo.name AS toplivo,
   my_kuzov_avto.name AS kuzov,
   my_kpp_avto.name AS kpp,
   my_privod_avto.name AS privod,
   my_color_avto.name AS color_name
   FROM my_ad
   INNER JOIN my_marka_avto
   INNER JOIN my_model_avto
   INNER JOIN my_dvigatel
   INNER JOIN my_toplivo
   INNER JOIN my_kuzov_avto
   INNER JOIN my_kpp_avto
   INNER JOIN my_privod_avto
   INNER JOIN my_color_avto
   WHERE my_ad.my_marka_avto_id = my_marka_avto.id
   AND my_ad.my_model_avto_id = my_model_avto.id
   AND my_ad.dvigatel_id = my_dvigatel.id
   AND my_ad.toplivo_id = my_toplivo.id
   AND my_ad.kuzov_id = my_kuzov_avto.id
   AND my_ad.kpp_id = my_kpp_avto.id
   AND my_ad.privod_id = my_privod_avto.id
   AND my_ad.color = my_color_avto.id
   AND my_ad.deny = 1


----------
Абонентское обслуживание и ремонт компьютеров в Днепропетровске

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 23:57 12-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke
php, mysql: вопросы по оптимизации
MySQL Помогите составить запрос
мало?
 

Цитата:
Подскажите как можно упростить и оптимизировать такой запрос?  

это смотрели?  
https://dev.mysql.com/doc/refman/5.0/en/using-explain.html


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:05 13-02-2014
KlimKlim



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
SELECT * ,  
   my_marka_avto.name AS marka_avto,  
   my_ad.id AS id_avto,  
   my_model_avto.name AS model_avto,  
   my_dvigatel.name AS dvigatel,  
   my_toplivo.name AS toplivo,  
   my_kuzov_avto.name AS kuzov,  
   my_kpp_avto.name AS kpp,  
   my_privod_avto.name AS privod,  
   my_color_avto.name AS color_name  
   FROM my_ad  
   INNER JOIN my_marka_avto  
   INNER JOIN my_model_avto  
   INNER JOIN my_dvigatel  
   INNER JOIN my_toplivo  
   INNER JOIN my_kuzov_avto  
   INNER JOIN my_kpp_avto  
   INNER JOIN my_privod_avto  
   INNER JOIN my_color_avto  
   WHERE my_ad.my_marka_avto_id = my_marka_avto.id  
   AND my_ad.my_model_avto_id = my_model_avto.id  
   AND my_ad.dvigatel_id = my_dvigatel.id  
   AND my_ad.toplivo_id = my_toplivo.id  
   AND my_ad.kuzov_id = my_kuzov_avto.id  
   AND my_ad.kpp_id = my_kpp_avto.id  
   AND my_ad.privod_id = my_privod_avto.id  
   AND my_ad.color = my_color_avto.id  
   AND my_ad.deny = 1

 
 
Покажите EXPLAIN по этому запросу, пожалуйста. Что-то мне говорит, что MYSQL очень врядли сможет использовать индексы для всех этих таблиц, и оптимальнее по времени будет сделать 8 отдельных запросов.

Всего записей: 383 | Зарегистр. 23-03-2006 | Отправлено: 11:29 14-02-2014
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
 
id     select_type     table     type     possible_keys     key     key_len         ref     rows     Extra     
1     SIMPLE            my_ad                   system     NULL           NULL        NULL     NULL    1     
1     SIMPLE            my_dvigatel           system     PRIMARY     NULL         NULL    NULL    1     
1     SIMPLE            my_kuzov_avto      system     PRIMARY     NULL         NULL    NULL    1     
1     SIMPLE            my_kpp_avto         system     PRIMARY     NULL         NULL    NULL    1     
1     SIMPLE            my_privod_avto     system     PRIMARY     NULL         NULL    NULL    1     
1     SIMPLE            my_color_avto       system     PRIMARY     NULL         NULL    NULL    1     
1     SIMPLE            my_marka_avto     const        PRIMARY     PRIMARY     4      const     1     
1     SIMPLE            my_model_avto     const         PRIMARY     PRIMARY     4      const     1     
1     SIMPLE            my_toplivo             const        PRIMARY     PRIMARY     4      const     1     
 


----------
Абонентское обслуживание и ремонт компьютеров в Днепропетровске

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 13:50 14-02-2014 | Исправлено: DarkSmoke, 13:52 14-02-2014
KlimKlim



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А почему вы решили его оптимизировать? В этом EXPLAIN никакого криминала нету. Ни USING FILESORT, ни чего страшного.

Всего записей: 383 | Зарегистр. 23-03-2006 | Отправлено: 15:31 14-02-2014
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Выглядит страшно , да и я не силен в MySQL, может есть какие то варианты.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 12:22 15-02-2014
KlimKlim



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И ещё, EXPLAIN надо на реальном объёме данных проводить, а у вас, на сколько я вижу, почти пустые таблицы.

Всего записей: 383 | Зарегистр. 23-03-2006 | Отправлено: 12:26 15-02-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Как оптимизировать запрос к БД?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru