Вопрос про объединение таблиц бд

L
На сайте с 11.07.2009
Offline
6
602

Привет, вчера начал изучать тонкости mysql, до этого обходился без них. Так вот, есть возможность объединить 4 таблицы и получить данные из них одним запросом, вместо четырех прежних. Я хотел спросить у вас, стоит ли объединять, не будет ли такой запрос занимать больше времени и больше памяти? Всегда ли стоит объединять таблицы?

Brand from Amber
На сайте с 18.08.2007
Offline
291
#1

Хороший вопрос. =) Обычно кол-во таблиц увеличивается для уменьшения размера БД и ускорения поиска. К примеру, если у Вас в одним из полей таблицы идут имена (Вася, Петя, Коля...) то имеет смысл каждому имени присвоить уникальный id и вынести в отдельную таблицу. В этом случае у Вас неограниченное кол-во строковых полей заменится на небольшое (равное кол-ву имён) + неограниченное числовых (содержащих id имени). Это ускорит поиск и уменьшит размер БД. Во всех остальных случаях ИМХО лучше хранить все данные в одной таблице.

Лучший способ понять что-то самому - объяснить это другому.
[Удален]
#2

lostpassword, iiner join или любой подходящий тебе join

bearman добавил 05.08.2009 в 09:24

Brand from Amber:
Хороший вопрос. =) Обычно кол-во таблиц увеличивается для уменьшения размера БД и ускорения поиска. К примеру, если у Вас в одним из полей таблицы идут имена (Вася, Петя, Коля...) то имеет смысл каждому имени присвоить уникальный id и вынести в отдельную таблицу. В этом случае у Вас неограниченное кол-во строковых полей заменится на небольшое (равное кол-ву имён) + неограниченное числовых (содержащих id имени). Это ускорит поиск и уменьшит размер БД. Во всех остальных случаях ИМХО лучше хранить все данные в одной таблице.

вы описали термин "нормализация базы данных"

L
На сайте с 11.07.2009
Offline
6
#3
Brand from Amber:
Хороший вопрос. =) Обычно кол-во таблиц увеличивается для уменьшения размера БД и ускорения поиска. К примеру, если у Вас в одним из полей таблицы идут имена (Вася, Петя, Коля...) то имеет смысл каждому имени присвоить уникальный id и вынести в отдельную таблицу. В этом случае у Вас неограниченное кол-во строковых полей заменится на небольшое (равное кол-ву имён) + неограниченное числовых (содержащих id имени). Это ускорит поиск и уменьшит размер БД. Во всех остальных случаях ИМХО лучше хранить все данные в одной таблице.

При генерации страницы пользователя нужны данные из всех 4-х таблиц. На других страницах столько данных не требуется. Не стоит забывать, что количество таблиц увеличивается и для большей упорядоченности. То есть информацию о дизайнах в соответствующей, о пользователях соответствующей. Так все таки ближе к теме, в моем случае объединять таблицы при запросе или не стоит?

V1
На сайте с 30.03.2006
Offline
52
#4

Смотря что за таблицы и как их объединять :) Никто ничего вам не скажет, по таким исходным данным. Может вы 4 таблички объединяете "union all" или соединяете большие таблицы без единого индекса...

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий