[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что быстрее и продуктивнее из двух вариантов
sharki
Такой вопрос, мне нужно вытащить из 2х таблиц разные данные, и вот запросы вида:


SELECT cabinet.name, cabinet.last_name, cabinet.logo, cabinet.tel,
cabinet.icq, cabinet.info, cabinet.yers, cabinet.siti, cabinet.id,
user.dateregister, user.lastvisit, user.login
FROM cabinet,user
WHERE cabinet.id_user = '".$id_user."'
AND user.id = '".$id_user."'


Или вывести с начало все данные по одной таблице, потом отдать парочку на выполнению другому запросу т.е тут вытаскиваем данные только по одной таблице за раз.

Что лучше и быстрее будет работать из 2х вариантов?
1) несколько таблиц обработать за один подход.
2) одну таблицу за один подход.



Спустя 45 минут, 48 секунд (17.11.2010 - 20:31) inpost написал(а):
сложно сказать, лучше всего проверить самому. А ещё всё зависит от объема таблиц.
microtime(true); - сделай проверку так и так, узнаешь на практике. Хотя с другой стороны часто слышу на форуме, что при тяжелых запросах лучше разбивать по одному на таблицу.

Спустя 1 минута, 44 секунды (17.11.2010 - 20:33) sergeiss написал(а):
Что-то мне мой внутренний голос подсказывает, что запрос очень неправильный. В результате его выполнения будет получено много данных, большая часть которых будет неверной.
Поэтому и ответить на вопросы ТС невозможно.

PS. Впрочем, щас подумаю... Может и не совсем так smile.gif

Спустя 1 час, 15 минут, 12 секунд (17.11.2010 - 21:48) sharki написал(а):
выйдет строго столько сколько нужно)) и все применимо))

вывод из Mysql он еще вот это выдал
Showing rows 0 - 0 (1 total, Query took 0.0007 sec) (быстро или медленно?)

Спустя 5 часов, 23 минуты, 37 секунд (18.11.2010 - 03:12) FatCat написал(а):
Цитата (sharki @ 17.11.2010 - 20:46)
Что лучше и быстрее будет работать из 2х вариантов?

Третий:
SELECT c.name, c.last_name, c.logo, c.tel,c.icq, c.info, c.yers, c.siti, c.id, 
u.dateregister, u.lastvisit, u.login
FROM cabinet c
LEFT JOIN user u ON(c.id_user=u.user.id)
WHERE u.id = '".$id_user."'

Подразумевается, что айдишник пользователя в обеих таблицах одинаков и проиндексирован.

Спустя 5 минут, 10 секунд (18.11.2010 - 03:17) Nikitian написал(а):
Если зависимость "1 к 1", то лучше inner join использовать, чтобы не ожидать пустые данные:

SELECT
c.name,
c.last_name,
c.logo,
c.tel,
c.icq,
c.info,
c.yers,
c.siti,
c.id,
u.dateregister,
u.lastvisit,
u.login
FROM
user u,
cabinet c
WHERE
c.id_user=u.user.id and
u.id = "$id_user"

Спустя 6 часов, 12 минут, 40 секунд (18.11.2010 - 09:30) linker написал(а):
Дело не в зависимости 1 к 1. INNER JOIN для других логических целей. Запрос совсем не тяжелый, расставь правильно индексы и забей.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.