Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: перекрестный запрос с множеством таблиц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: КАК ПРАВИЛЬНО СТРОИТЬ ПЕРЕКРЕСТНЫЕ ЗАПРОСЫ С ИСПОЛЬЗОВАНИЕМ МНОЖЕСТВА ТАБЛИЦ?
DlTA
Отправлено: 04 Ноября, 2010 - 10:41:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




суть: намечается обработка статистики с сайта, но при первых же наметках было замечено что если в перекрестном запросе участвуют более 2 таблиц то сервак ложится минут на 10, а может и более.
количество записей в таблицах десятки тысяч. при запросе использую LEFT JOIN.

так вот вопрос: КАК ПРАВИЛЬНО СТРОИТЬ ПЕРЕКРЕСТНЫЕ ЗАПРОСЫ С ИСПОЛЬЗОВАНИЕМ МНОЖЕСТВА ТАБЛИЦ и чтоб при этом сервак не подвис?
 
 Top
DlTA
Отправлено: 04 Ноября, 2010 - 22:20:51
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




-------------------------------- -------------------------------- -------------------------------- ---
так как ответов не обнаружено выкладываю свой вариант
в общем мне пришлось отказаться от использования в запросах JOIN-ов и обойтись обычной выборкой по типу
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `t1`.`p1`, `t1`.`p2` ..., `t2`.`p1`, `t2`.`p2`, ... FROM `t1`, `t2`, `t3`, ... WHERE (условия связи или четам еще)

работает как мне показалось такая схема запроса на ПОРЯДОК, а то и на два быстрее чем если использовать объединяющие операторы (или как они там называются), а главное сервак при этом не падает!
 
 Top
Варяг
Отправлено: 05 Ноября, 2010 - 09:54:06
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




можно также использовать знак звезды если надо все из каких то таблиц выбирать
`t1`.*
 
 Top
JustUserR
Отправлено: 05 Ноября, 2010 - 20:21:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA пишет:
Так как ответов не обнаружено выкладываю свой вариант
Предложенный вами вариант в общем случае не обеспечивает достаточное оптимизированное выполнение запроса - поскольку включает в себя получение списка информационного полей являющегося декартовым произведением всех указанных таблиц - однако за счет выполнения соответствующей операции на стороне сервера БД и реализации эффективного доступа в внутренней системе представления данных - осуществление указанного SQL-запроса производится в приемлемое время - однако увеличение числа сочетаемых таблиц не представляет возможность сохранения такого результата
В качестве решения указанной задачи возможно применение различных методов оптимизации SQL-запросов - включающих в себя упрощение вычислений за счет редукции соединений в наборы вложенных запросов - с указанием реальных требуемых компонентов


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB