несколько вопросов новичка (ограничения и индексы)
От | Dmitry E. Oboukhov |
---|---|
Тема | несколько вопросов новичка (ограничения и индексы) |
Дата | |
Msg-id | 20110221062816.GF23127@apache.rbscorp.ru обсуждение исходный текст |
Список | pgsql-ru-general |
есть табличка servers: | id | name | есть другая табличка в которой каждая запись может иметь отношение к нескольким серверам, однако выборок кроме как статистики не планируется, соответственно хочется сделать в ней такой вот столбик: resources: | id | some column | ... | server_id[] | то есть денормализованный вариант который позволяет без join'ов отвечать на вопрос: на каких еще серверах лежит данный ресурс? Вопрос: как написать ограничение для столбика server_id[] чтобы 1. в нем проводилась проверка валидности укладываемых в него ID 2. чтобы эта проверка не убила профит от денормализации по накладным расходам и еще: можно ли выборкой из второй и первой таблицы получить результат вида: | id | some column | ... | server_name[] | Я с массивами в столбиках пока еще плаваю :) И еще вопрос по индексам. есть табличка | id | ... | type::varchar(16) | по полю type построен BTREE индекс. Значение в поле type по сути - ENUM. Однако варианты иногда таки меняются и альтертаблить не хочется. Так же во всех выборках нужно строго строковое значение, соответственно нормализовывать тоже не хочется. вопрос: индекс по varchar(16) vs индекс по ENUM (или INT) насколько у них будет большая разница в скорости работы? ну места сама таблица будет конечно больше занимать, но места вроде не жалко. имеет ли большой смысл нормализация? -- ... mpd is off . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Вложения
В списке pgsql-ru-general по дате отправления: