
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.04.2008, 17:27
|
|||
|---|---|---|---|
|
|||
Посоветуйте... избыточность полей или view? |
|||
|
#18+
Посоветуйте, как лучше сделать. Есть цепочка таблиц, Projects->Respondents->RespondentCalls->Answers В каждой таблице есть ссылка наверх (FK), т.е. в Respondents есть ProjectID, в RespondentCalls есть RespondentID и в Answers есть RespondentCallID Но, последне время участились активные выборки например из Answers, где в where надо проверять ProjectID, к которому строка относится. Сейчас это делается через два inner join, чтобы добыть ProjectID, но, как-то это на мой вгляд не оптимально. Данные в таблицы добавляются очень активно, но после добавления ссылки уже никогда не меняются. Кол-во записей например в Answers увеличивается где-то на 1 млн в месяц. Придумалось два варианта избавления от явных джойнов. Добавить во все тблички избыточные поля, типа в Answers добавить ProjectID и RespondentID, а в RespondentCalls добавить ProjectID, и заполнять эти поля при добавлении записи, либо триггером (imho триггером смысла мало). Или сделать view, который будет добывать поля джойнами, и далее уже работать с этим view. Что лучше выбрать? Или есть ещё варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.04.2008, 11:19
|
|||
|---|---|---|---|
|
|||
Посоветуйте... избыточность полей или view? |
|||
|
#18+
Первый вопрос: чем не нравятся join ? Если смотреть с точки зрения нормализации БД, т.е. чтобы изменение поля в одном месте не влекло изменений в другом, то избыточные поля нельзя добавлять ни в коем разе, а так либо создавать view, либо писать хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.04.2008, 11:32
|
|||
|---|---|---|---|
|
|||
Посоветуйте... избыточность полей или view? |
|||
|
#18+
Join'ы как раз нравятся. Но, немного смущает что при вставке записи я всегда знаю все ID, и могу их добавить в таблицу, чтобы при последующих выборках небыло лишней беготни по индексам, тем более после добавления записи не меняются (точнее ссылки, т.е. все ID-поля). С другой стороны, судя по планам запросов - джойны не отнимают много времени, сейчас, когда в табличках всего пара млн. записей. Сохранится ли это когда записей будет 500 млн.? Вот в чем вопрос. Пока сделал для удобства view, которые дополняют табличку Answers нужными ID используя join'ы, а все выборки идут уже из этого view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.04.2008, 13:35
|
|||
|---|---|---|---|
|
|||
Посоветуйте... избыточность полей или view? |
|||
|
#18+
При 5 * 10^7 записей как раз избыточность может вылиться в нешуточный гемор с операциями, так как легче забыть добавить значение, поэтому при относительно медленных операциях самое то прямо или косвенно (через view) пользовать join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&mobile=1&tid=1543896]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 312ms |

| 0 / 0 |
