[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Связь таблиц БД.
Ramzil_Nixon
Как это можно сделать?



Спустя 2 минуты (30.11.2011 - 12:56) m4a1fox написал(а):
А JOIN уже не помогает?!

Спустя 1 минута (30.11.2011 - 12:57) Ramzil_Nixon написал(а):
m4a1fox, даже не знаю что это такое smile.gif Щас прочту smile.gif


Спустя 21 секунда (30.11.2011 - 12:58) Invis1ble написал(а):
Вот-вот, прочти.

Спустя 1 минута, 53 секунды (30.11.2011 - 12:59) RCuPeR написал(а):
Да, JOIN вариант. Но, с точки зрения проектирования, перевести тип таблицы в InnoDB будет на много экономичней и правильней.

Спустя 1 минута, 10 секунд (30.11.2011 - 13:01) Ramzil_Nixon написал(а):
RCuPeR, а с данными и выводами ниче не случиться?

Спустя 3 минуты, 36 секунд (30.11.2011 - 13:04) Ramzil_Nixon написал(а):
Цитата
5.2.6 Как MySQL оптимизирует LEFT JOIN и RIGHT JOIN



Выражение "A LEFT JOIN B" в MySQL реализовано следующим образом:

Таблица B устанавливается как зависимая от таблицы A и от всех таблиц, от которых зависит A.
Таблица A устанавливается как зависимая ото всех таблиц (кроме B ), которые используются в условии LEFT JOIN.
Все условия LEFT JOIN перемещаются в предложение WHERE.
Выполняются все стандартные способы оптимизации соединения, за исключением того, что таблица всегда читается после всех таблиц, от которых она зависит. Если имеется циклическая зависимость, MySQL выдаст ошибку.
Выполняются все стандартные способы оптимизации WHERE.
Если в таблице A имеется строка, соответствующая выражению WHERE, но в таблице B ни одна строка не удовлетворяет условию LEFT JOIN, генерируется дополнительная строка B, в которой все значения столбцов устанавливаются в NULL.
Если LEFT JOIN используется для поиска тех строк, которые отсутствуют в некоторой таблице, и в предложении WHERE выполняется следующая проверка: column_name IS NULL, где column_name - столбец, который объявлен как NOT NULL, MySQL пререстанет искать строки (для отдельной комбинации ключа) после того, как найдет строку, соответствующую условию LEFT JOIN.
RIGHT JOIN реализован аналогично LEFT JOIN.

При указании жесткого порядка чтения таблиц в LEFT JOIN и STRAIGHT JOIN оптимизатор связей (который определяет, в каком порядке таблицы должны быть связаны) будет выполнять работу намного быстрее, так как ему потребуется проверять меньшее количество перестановок таблиц.

Обратите внимание: отсюда следует, что если выполняется запрос типа

SELECT * FROM a,b LEFT JOIN c ON (c.key=a.key) LEFT JOIN d (d.key=a.key)
         WHERE b.key=d.key
MySQL будет делать полный просмотр таблицы b, поскольку LEFT JOIN заставит его читать эту таблицу перед d.

В этом случае, чтобы предотвратить полный просмотр таблицы b, нужно изменить запрос таким образом:

SELECT * FROM b,a LEFT JOIN c ON (c.key=a.key) LEFT JOIN d (d.key=a.key)
         WHERE b.key=d.key


Вот тут я ничё не понял biggrin.gif

Спустя 3 минуты, 17 секунд (30.11.2011 - 13:07) RCuPeR написал(а):
Да ничего не случится. Таблицу переведет для тебя сам PMA, лишних телодвижений тебе делать не нужно.

Не, конечно JOIN выход из ситуации, но, уверен, в этом случае можно сделать проще. Для того он и MySQL5.

Спустя 2 минуты, 11 секунд (30.11.2011 - 13:10) Игорь_Vasinsky написал(а):
Ramzil_Nixon
Разбирайся вслух wink.gif

Спустя 2 минуты, 31 секунда (30.11.2011 - 13:12) m4a1fox написал(а):
Ramzil_Nixon
Цитата
Вот тут я ничё не понял

Делай проще что б понять! Например! Берешь тетрадку и пишешь тему в ней! Join MYSQL. После чего берешь и делаешь мини конспект с разбором всех строк из статьи! ИМХО конечно - но я так делаю с ООП - ибо сходу просто прочитав не получится!

Спустя 29 секунд (30.11.2011 - 13:13) Ramzil_Nixon написал(а):
RCuPeR, ссылку на более понятную статейку не можешь скинуть? А то подходящего не нашшел..

Спустя 5 минут, 43 секунды (30.11.2011 - 13:18) RCuPeR написал(а):
Цитата (Ramzil_Nixon @ 30.11.2011 - 10:13)
RCuPeR, ссылку на более понятную статейку не можешь скинуть? А то подходящего не нашшел..

Эм... Статейку подсказать, к сожалению не могу. Сам делал, так сказать подсказками товарищей и методом тыка.
Я тебе в личку скидывал ссылку, там довольно таких хорошо все на примерах описано.

Спустя 2 минуты, 2 секунды (30.11.2011 - 13:20) Ramzil_Nixon написал(а):
RCuPeR, Сначало JOIN освою, потом InnoDB smile.gif

Спустя 41 секунда (30.11.2011 - 13:21) RCuPeR написал(а):
Цитата (Ramzil_Nixon @ 30.11.2011 - 10:20)
RCuPeR, Сначало JOIN освою, потом InnoDB smile.gif

Дерзай wink.gif

Спустя 3 минуты, 46 секунд (30.11.2011 - 13:25) Ramzil_Nixon написал(а):
Цитата (m4a1fox @ 30.11.2011 - 10:12)
Берешь тетрадку и пишешь тему в ней! Join MYSQL.


Я так и делаю, только не с тетрадем, а с блогом biggrin.gif

Спустя 1 минута, 3 секунды (30.11.2011 - 13:26) RCuPeR написал(а):
Цитата (Ramzil_Nixon @ 30.11.2011 - 10:25)
Цитата (m4a1fox @ 30.11.2011 - 10:12)
Берешь тетрадку и пишешь тему в ней! Join MYSQL.


Я так и делаю, только не с тетрадем, а с блогом biggrin.gif

А блог покажешь ? rolleyes.gif

Спустя 11 минут, 38 секунд (30.11.2011 - 13:38) Ramzil_Nixon написал(а):
RCuPeR, да конечно, только блог не мой а моего друга smile.gif

http://yaxakep.ru


_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

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