|
|
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Добрый день! Вопрос новичка (да и может обсуждалось, не нашел): Что быстрее (лучше?) два join одной большой таблицы (as tab1 ... as tab2) или два join маленьких разных таблиц? Пример есть картотека, в ней шкафы с 2 полками(!!! только 2 и никак иначе), в которых могут находиться различные предметы. Запросы - берем шкаф и смотрим что и на какой полке лежит. Таблица ШКАФ - id,name Таблица ПРЕДМЕТ - id,name А вот дальше вопрос: можно сделать 2 таблицы ПОЛКА1 и ПОЛКА2 в каждой поля id, id_шкафа, id_предмета. И запрос делать так: Код: sql 1. 2. 3. 4. 5. Либо сделать одну таблицу ПОЛКА, но в ней указать ключ разделения, т.е. id, id_шкафа, id_предмета, KEY_ПОЛКА и тогда: Код: sql 1. 2. 3. 4. 5. Естественно во втором случае таблица ПОЛКА будет равняться (по кол-ву строк) сумме (ПОЛКА1 + ПОЛКА2) в первом варианте. Какой вариант лучше? Или может вообще лучше делать иначе? (но какой из этих вариантов лучше - все равно интересно) PS. Перемещения с полки на полку практически нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2016, 20:02 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812, Нужны 2 таблицы - место хранения и объект хранения. Для выбора потребуется 1 жойн. Место хранения должно содержать и номер шкафа, и номер полки (лучше сквозной, т.е. уникальный) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 07:49 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Это если предметы уникальны. Если нет - потребуется связь многие со многими через промежуточную таблицу - объект на хранении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 08:43 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Три таблицы: Шкафы Полки Предметы Шкафы: id_шкафа(AI), ОписаниеШкафа Полки: id_полки(AI), ОписаниеПолки, id_шкафа Предметы: id_предмета(AI), ОписаниеПредмета, id_полки Нельзя ставить в одну таблицу Предметы id_полки и id_шкафа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 08:45 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 08:51 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
По моей схеме должно быть так: Шкаф 1 содержит полки 1 и 2; полка 1 содержит предметы 1,2,3,4; полка 2 содержит предметы 5,6,7,8; Шкаф 2 содержит полки 3 и 4; полка 3 содержит предметы 9,10,11,12; полка 2 содержит предметы 13,14,15,16; Кстати предметы на полках могут быть не уникальными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 08:58 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Таблица шкафов. Таблица полок, ссылающаяся на таблицу шкафов. Таблица предметов. Таблица соответствия предмет-полка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 10:51 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Возможно криво написал - таблица "предмет" - фактически справочник предметов. То есть там должны быть уникальные предметы. Но в шкафу эти предметы могут повторяться, и сочетаться в любых комбинациях. авторпотребуется связь многие со многими через промежуточную таблицу В качестве этой таблицы у меня выступает таблица "ПОЛКА" - она связывает место хранения "ШКАФ" и объект хранения "ПРЕДМЕТ". Объект "полка" фактически не существует - у него нет никаких свойств, только номер 1 или 2. авторТри таблицы: Шкафы Полки Предметы Шкафы: id_шкафа(AI), ОписаниеШкафа Полки: id_полки(AI), ОписаниеПолки, id_шкафа Предметы: id_предмета(AI), ОписаниеПредмета, id_полки У предметов много уникальных свойств и хранить их тысячами раз не хотелось бы - таблица "предметы" в это случае будет разбита на две - во вторую будут вынесены "ОписаниеПредмета" (которые уникальны), и опять получаем многие к многим... авторШкаф 1 содержит полки 1 и 2; полка 1 содержит предметы 1,2,3,4; полка 2 содержит предметы 5,6,7,8; Шкаф 2 содержит полки 3 и 4; полка 3 содержит предметы 9,10,11,12; полка 2 содержит предметы 13,14,15,16; Не совсем : Шкаф 1 содержит полки 1 и 2; полка 1 содержит предметы 1*100,2*50,3*20,4; полка 2 содержит предметы 1*50,2*1000,3*10,8; И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 10:54 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaТаблица шкафов. Таблица полок, ссылающаяся на таблицу шкафов. Таблица предметов. Таблица соответствия предмет-полка. Да, все так - только т.к. полок реально нет и они не нужны - это и есть таблица соответствия шкаф-предмет. Только нужно еще добавить 1 свойство (bool) в это соответствие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 10:57 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812и они не нужны Если верить тому, что пишется выше - нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 11:18 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaЕсли верить тому, что пишется выше - нужны. Похоже я что-то туплю, и уже начинаю это чувствовать... Еще пару магических пенделей и... По другому - давайте заменим полку любым булевым определением - например цветом (белый или черный) есть справочник предметов id, prop есть таблица (справочник) шкафов - id, prop Нужна связывающая таблица - шкаф-предмет с доп свойством "цвет"... таблица ШП - id, id-шкафа, id-предмета, цвет. но join-а все равно 2 для выбора. В общем похоже не до конца понимаю "многое к многому", пошел читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 11:42 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
add: А еще - если мне надо получить таблицу с колонками: шкаф, черный предмет, белый предмет связывающую таблицу мне придется 2 раза подключать? И не будет ли лучше ее разбить на две (по цвету) и подключать две разные но маленькие вместо подключения двух раз одной большой. Или такую таблицу лучше формировать уже сторонними средствами, получая от базы простую "шкаф, предмет, цвет"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 11:59 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812предмет с доп свойством "цвет"то есть цвет - это атрибут предмета, и никак не связан ни со шкафом, ни с тем, в каком шкафу он лежит. Чую, ты доупрощался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 12:35 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Булевое значение - не годиться. Нужно оставить как я написал. Только из таблицы Предметы убрать id_полки авторТри таблицы: Шкафы Полки Предметы Шкафы: id_шкафа(AI), ОписаниеШкафа Полки: id_полки(AI), ОписаниеПолки, id_шкафа Предметы: id_предмета(AI), ОписаниеПредмета Нельзя ставить в одну таблицу Предметы id_полки и id_шкафа И добавить четвертую таблицу ТблПредметыНаПолках: id_пнп(AI), id_полки, id_предмета, КоличествоПредметовПокладенныхНаПолку Подозреваю КоличествоПредметовПокладенныхНаПолку будет у Вас всегда 1 или если Вы их туда кладете пачками, то более. Таблица ТблПредметыНаПолках будет иметь вид Код: plaintext 1. 2. 3. 4. 5. Запрос из первого поста ТС будет иметь вид Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 12:40 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Я правильно понял что булевое значение для определения IF (полка=верхняя) THEN bool=TRUE else bool=FALSE Да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 12:44 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Такс... Вы написали изначально, что полки есть и их 2. Теперь их нет. Если их нет, то таблицу Полки убираем. Таблица ПредметыНаПолках должна ссылаться на таблицу Шкафы. Три таблицы: Шкафы Полки Предметы Шкафы: id_шкафа(AI), ОписаниеШкафа ТблПредметыВШкафах: id_пнп(AI), id_шкафа, id_предмета, КоличествоПредметовПокладенныхВШкаф Предметы: id_предмета(AI), ОписаниеПредмета Таблица ТблПредметыВШкафах будет иметь вид Код: plaintext 1. 2. 3. 4. Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 12:52 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
У меня ошибка Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 13:10 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
авторто есть цвет - это атрибут предмета, и никак не связан ни со шкафом, ни с тем, в каком шкафу он лежит. Чую, ты доупрощался... Я просто попытался пример подобрать похожий. Идея просто в том что связь многие со многими + атрибут, который не можно выделить отдельно. CosmagnettoЯ правильно понял что булевое значение для определения IF (полка=верхняя) THEN bool=TRUE else bool=FALSE Да? Да, можно и так. авторid_пнп(AI), id_шкафа, id_предмета, КоличествоПредметовПокладенныхНаПолку 1 1 2 2 Вот тут я усложнил (и больше запутал) пример написав о "кол-ве предметов" Вот еще пример: Таблица СЫР(на складе) Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. id_сыра, prop_сыра, страны экспорта, страны импорта Тогда связывающая таблица СЫР_СТРАНА будет Код: plaintext 1. 2. 3. 4. 5. А получить надо таблицу типа: Код: plaintext 1. 2. 3. 4. Я пишу запрос Код: sql 1. 2. 3. 4. 5. 6. Но чую что это какой-то индусский метод)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 14:21 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Мутно что-то... я так и не понял задачу. Из примера (результата) сформировать себе задачу и соответственно решение не получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 14:32 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812Идея просто в том что связь многие со многими + атрибут, который не можно выделить отдельно. Это ЧЕЙ, ипона мать, атрибут? какой сущности атрибут, в такую таблицу и заколачивай. А у тебя атрибут одной сущности запихивается в таблицу, где хранятся экземпляры другой сущности - и чего, спрашивается, косяки прут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 14:50 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaЭто ЧЕЙ, ипона мать, атрибут? какой сущности атрибут, в такую таблицу и заколачивай. А у тебя атрибут одной сущности запихивается в таблицу, где хранятся экземпляры другой сущности - и чего, спрашивается, косяки прут? Это атрибут страны - то есть страна либо экспорта либо импорта. Можно "заколотить" его в справочник СТРАНЫ, но тогда этот справочник станет в 2 раза больше - то есть получиться что каждая строчка в нем будет дублироваться (до одного бул. значения). Так стоит делать? Но с точки зрения запроса это мало на что повлияет просто "and exp1.экспорт-импорт=1" перейдет в другой join. авторМутно что-то... я так и не понял задачу. Нужно получить таблицу всех значений СЫРОВ с колонками ЭКСПОРТ и ИМПОРТ, содержащими страны (для удобных сортировок, выборок). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:09 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812Но с точки зрения запроса это мало на что повлияет просто "and exp1.экспорт-импорт=1" перейдет в другой join. Нет, тут ошибся, повлияет - это условие совсем отвалится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:11 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
авторА в выборке нужно в 95% случаев получать таблицу вида: id_сыра, prop_сыра, страны экспорта, страны импорта Тогда связывающая таблица СЫР_СТРАНА будет Как это в 95% случаев? Селекты работают в 100% случаев и выдают выборки на 100% соответствующие заданным значениям. Я когда про задачу спрашивал, я ожидал услышать это: Сделать выборку пар стран, которые продают друг другу сыры с указанием типа сыра То есть рус продает гер сыр 1 гер продает рус сыр 2 рус продает ита сыр 1 гер продает ита сыр 3 Я правильно угадал задание? )))))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:21 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
CosmagnettoКак это в 95% случаев? Селекты работают в 100% случаев и выдают выборки на 100% соответствующие заданным значениям. Это я про то что это будет основным запросом. То есть понятно что будет и другая работа с таблицей, но основная именно эта. CosmagnettoТо есть рус продает гер сыр 1 гер продает рус сыр 2 рус продает ита сыр 1 гер продает ита сыр 3 Я правильно угадал задание? )))))))))))) Да, только еще в этой таблице должны быть сыры без стран экспорта и/или импорта например строка "пусто" продает "пусто" сыр 4 То есть мы должны понимать что сыр есть, но стран у него нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:30 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
А может страна и покупать и продавать один и тот же сыр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:34 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Проще говоря нужно создать таблицу, которая показывает спрос и предложение по каждому товару, также вывести строки где присутствует только спрос или только предложение, и товары по которым отсуствиет спрос и предложение Да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:38 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812Это атрибут страны - то есть страна либо экспорта либо импорта. То есть у тебя есть сущность "Страна", имеющая атрибут "экс-им-портёр"... И экземпляры сущности "Швамбрания экспортёр" и "Швамбрания импортёр" - это две независимые страны, ибо две независимые записи в таблице экземпляров сущности "Страна". Верно? Что-то мне подсказывает, что ни разу. А коли так - то кто-то неправ, и должны быть таблицы Страна, ЭкспортёрИмпортёр, и связующая СтранаЭкспортёрИмпортёр, организующая между первыми двумя связь типа много-ко-много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:43 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
CosmagnettoА может страна и покупать и продавать один и тот же сыр? Может. CosmagnettoПроще говоря нужно создать таблицу, которая показывает спрос и предложение по каждому товару, также вывести строки где присутствует только спрос или только предложение, и товары по которым отсуствиет спрос и предложение Да? Да (неуверенно, усложнили вы как-то задачу, введя новую терминологию спроса и предложения) AkinaТо есть у тебя есть сущность "Страна", имеющая атрибут "экс-им-портёр"... И экземпляры сущности "Швамбрания экспортёр" и "Швамбрания импортёр" - это две независимые страны, ибо две независимые записи в таблице экземпляров сущности "Страна". Верно? Что-то мне подсказывает, что ни разу. А коли так - то кто-то неправ, и должны быть таблицы Страна, ЭкспортёрИмпортёр, и связующая СтранаЭкспортёрИмпортёр, организующая между первыми двумя связь типа много-ко-много. Мне кажется вы усложняете... До конца не понял подхода, но создание еще связи между "экспортер/импортер" и "страна" еще сильнее усложнит наш пример (еще дальше отодвинет от конечного решения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 15:59 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaТо есть у тебя есть сущность "Страна", имеющая атрибут "экс-им-портёр"... И экземпляры сущности "Швамбрания экспортёр" и "Швамбрания импортёр" - это две независимые страны, ибо две независимые записи в таблице экземпляров сущности "Страна". Верно? Что-то мне подсказывает, что ни разу. А коли так - то кто-то неправ, и должны быть таблицы Страна, ЭкспортёрИмпортёр, и связующая СтранаЭкспортёрИмпортёр, организующая между первыми двумя связь типа много-ко-много. Страна может являться как экспортером так и импортером. Я этот атрибут предложил пихать в промежуточную таблицу (таблицу связывающую СЫР и СТРАНУ). Ну а по сути - да это атрибут страны в определенных условиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:09 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:26 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812по сути - да это атрибут страны в определенных условияхНет. Это мультиатрибут. И потому много-ко-много. Более того - это мультиатрибут не страны, а пары Страна - Товар (запросто же может быть, что пармезан страна экспортирует, а чечил импортирует). Но если ты всё же делаешь это мультиатрибутом страны, и при этом хочешь уйти от промежуточной таблицы - сделай у Страны не один, а два атрибута. Первый - экспортёр (да/нет, true/false), второй, соответственно, импортёр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:26 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaНет. Это мультиатрибут. И потому много-ко-много. Более того - это мультиатрибут не страны, а пары Страна - Товар (запросто же может быть, что пармезан страна экспортирует, а чечил импортирует). Но если ты всё же делаешь это мультиатрибутом страны, и при этом хочешь уйти от промежуточной таблицы - сделай у Страны не один, а два атрибута. Первый - экспортёр (да/нет, true/false), второй, соответственно, импортёр. Погоди, вопрос не к справочнику страны. Akinaэто мультиатрибут не страны, а пары Страна - Товар Это абсолютно так. Но вопрос не в этом - мне надо соединить многое ко многим сыр и страны, в этих соединениях указать - чем является страна - импортером или экспортером. А дальше (основная цель) выборка всех сыров с колонками "страны экспорта", "страны импорта". И вот тут начальный вопрос - можно сделать 2 соединительные таблицы "страны экспорта" и "страны импорта", а можно одну, но большую - "страны", а в ней атрибут "экспорт/импорт". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:42 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
[quot Akina]saya812сделай у Страны не один, а два атрибута. Первый - экспортёр (да/нет, true/false), второй, соответственно, импортёр. нет смысла Тру - импортер, Фолс - экспортер, Null - ни то ни другое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:45 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
CosmagnettoТру - импортер, Фолс - экспортер, Null - ни то ни другоеА если и то, и другое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:47 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
две строки подряд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:48 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812А дальше (основная цель) выборка всех сыров с колонками "страны экспорта", "страны импорта". И вот тут начальный вопрос - можно сделать 2 соединительные таблицы "страны экспорта" и "страны импорта", а можно одну, но большую - "страны", а в ней атрибут "экспорт/импорт".Ну это по сути же пивот, а в реализации, вероятно, GROUP BY + GROUP_CONCAT? Ну тогда проще по тексту использовать одну копию таблицы и условие в аргументе функции, а по производительности лучше два раздельных запроса и UNION ALL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:51 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Cosmagnettoдве строки подрядЭто ты делаешь две страны из одной. О чём говорилось выше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:51 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Чувствуется мне нужно копать в сторону нескольких связок (SELECT + INSERT IGNORE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:51 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
AkinaCosmagnettoдве строки подрядЭто ты делаешь две страны из одной. О чём говорилось выше... В промежуточной таблице - да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:53 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812 , Базовую таблицу (в последнем случае "СЫР") перебирать придется всю, тупо в лоб, индексы тут не помогут, если только требуемое упорядочивание не совпадет с индексом) Связывающая (или развязывающая, вопрос терминологии) таблица может быть одна с дополнительным признаком, или их может быть несколько, для каждого признака своя. В любом случае для ускорения запроса на эту (эти) таблицу необходимо навесить индекс. Скорость поиска по индексу для большой и огромной таблиц примерно одинаковы, поэтому разделение таблиц на несколько для каждого признака на скорость не повлияет. Суммарное число записей в связывающих таблицах по признакам и в одной таблице с дополнительным полем тоже одинаковы. Небольшое увеличение объема данных в одной таблице (за счет дополнительного поля "признак") вполне компенсируется организацией и поддержкой нескольких однотипных таблиц, во всяком случае отдельного обсуждения не заслуживает. Включение в индекс общей таблицы несколько увеличит размер индексов по сравнению с индексами раздельных таблиц, но тоже не вижу в этом большой разницы. Очевидное преимущество одной таблицы - масштабируемость. Так, выпустили новую модель шкафа с тремя полками - и не придется переписывать ничего (ну, кроме разве что контроля номера полки при вводе данных). Выводы делать не буду ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:54 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
CosmagnettoВ промежуточной таблице - да.Ммм... что-то я теряю нить обсуждения... мне казалось, что копья ломаются именно из-за нежелания делать связующую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 16:54 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Вроде все понятно, в рамках вопроса "что быстрее / лучше" ответ получил. А по сути запроса так делаю - на join-ах или как-то иначе лучше? AkinaМмм... что-то я теряю нить обсуждения... мне казалось, что копья ломаются именно из-за нежелания делать связующую таблицу. Нет, связывающую все равно придется) Я другого способа не вижу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 17:06 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
saya812по сути запроса так делаю - на join-ах или как-то иначе лучше? А как еще-то? SQL работает на JOINах, даже если это выглядит как декартово произведение, или как вложенный запрос Все равно требуется поиск в таблицах и объединение результатов Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 17:17 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
ну, или для раздельных таблиц Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 17:20 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Так и делал... Спасибо всем за участие! Если есть еще идеи (варианты) пишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 17:43 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
Cygapb-007saya812по сути запроса так делаю - на join-ах или как-то иначе лучше? А как еще-то? SQL работает на JOINах, даже если это выглядит как декартово произведение, или как вложенный запрос Все равно требуется поиск в таблицах и объединение результатов Код: sql 1. 2. 3. 4. 5. 6. Так это работает так, как нужно ТС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 17:53 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 18:04 |
|
||
|
join 1 большой или 2-х маленьких таблиц
|
|||
|---|---|---|---|
|
#18+
CosmagnettoТак это работает так, как нужно ТС? Да, это работает. Но просто сейчас я переписываю код (этот писался года 3-4 назад) и задумался о его верности, в плане оптимизации - например подумал о возможности разделения на 2 разные таблицы - типа меньше строк быстрее работа... Но подумал мало-ли например 1 таблица кэшируется и второе ее подключение нечего не стоит. Или может вообще не туда копать стоит, как-то переписать иначе, без безумного кол-ва join-ов... Но пока, как я понимаю, такое решение самое оптимальное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 19:50 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1831194]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 520ms |

| 0 / 0 |
