[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что лучше 1 большая таблица sql или несколько?
Renden
Hello, есть таблица users в ней там логин, пароль, имя, фамилия, емеил, какая-то инфа и тп, короче столбцов ~20, вот я думаю резонно ли хранить все в 1 таблице или лучше сделать допустим под логин 1 таблица, с ид, лог, пас, а под инфу 2 таблица, под еще какую-то инфу привязаную к пользователю 3 таблица и тп, просто резонно ли делать join или оставить все в одной?



Спустя 3 минуты, 43 секунды (16.05.2011 - 11:22) Zerstoren написал(а):
Лучше как минимум отгородить таблицу логин и пароль. В целях безопасности.
А по скорости. То лучше разделите их на логические части.

Т.е. к логину и паролю обращаетесь редко - ну и пусть будет для них своя таблица.

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

Спустя 13 минут, 5 секунд (16.05.2011 - 11:35) Renden написал(а):
Zerstoren
По скорости мне кажется потеряется, тк допустим есть модуль траффик, в нем IP-шники, которые привязаны к пользователю так запрос получается допустим такой:

SELECT id,firstname,lastname FROM users WHERE ip='$some_ip'


А если я разделю будет примерно так..

SELECT u.id,u.firstname,u.lastname FROM users u INNER JOIN users_ips up ON u.id=up.user_id WHERE up.ip='$some_ip'

Спустя 15 минут, 32 секунды (16.05.2011 - 11:51) linker написал(а):
Всё зависит от того какого рода дополнительная инфа о пользователе. Если она напрямую является сущностью пользователя, то лучше всё оставлять в одной таблице.
Скажу иначе, если связь между пользователем и инфой пользователя в обоих направлениях есть связь"один к одном", то это одна сущность пользователь, а значит должна храниться в одной таблице. При отображении списка пользователей позволит избежать явно лишнего JOINа.

Спустя 4 минуты, 47 секунд (16.05.2011 - 11:56) Renden написал(а):
linker
Ясно, спасибо, а логин, пасс лучше отделить всеж?

Спустя 6 минут, 2 секунды (16.05.2011 - 12:02) linker написал(а):
Renden
Не имеет никакого смысла, но при обозначенном мною выше условии.

Спустя 1 час, 27 минут, 15 секунд (16.05.2011 - 13:29) Krevedko написал(а):
вообще конечно любопытная дилемма. когда я учился, нам говорили, что надо обязательно все разделять по максимуму. и не создавать такие столбцы, значения в которых могут быть скажем вычислены.
однако когда я писал галерею, мне надо было выводить там количество комментариев к каждой фотке (вообщем на странице куча фоток и под каждой написано Комментариев-100 например. Мы кликаем на эту ссылку и видим эти комментарии). Мне сказали, что нерационально для каждой фотки заниматься подсчетами или даже использовать group by в таблице комментариев по ид фотки, поэтому я количество комментариев сделал прямо в таблице фоток и все выуживается одним селектом. Просто при добавлении комментария или удалении получается +1/-1 для этой фотки соответственно (тот же триггер).
Так что тут тоже надо смотреть как лучше/быстрее.

Спустя 1 час, 3 минуты, 36 секунд (16.05.2011 - 14:33) linker написал(а):
Если есть жестокая необходимость (например для увеличения производительности), то советуют проводить денормализацию.
Быстрый ответ:

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