37 lines
1.9 KiB
SQL
37 lines
1.9 KiB
SQL
-- Ключи и индексы.
|
|
-- Схема исторически велась без ключей, поэтому перед добавлением PK убираем
|
|
-- возможные дубли (важно при загрузке данных из старой БД).
|
|
|
|
-- tg_users
|
|
DELETE FROM bot.tg_users a USING bot.tg_users b
|
|
WHERE a.ctid < b.ctid AND a.id_user = b.id_user;
|
|
ALTER TABLE bot.tg_users ALTER COLUMN id_user SET NOT NULL;
|
|
ALTER TABLE bot.tg_users ADD CONSTRAINT tg_users_pkey PRIMARY KEY (id_user);
|
|
|
|
-- de_users
|
|
DELETE FROM bot.de_users a USING bot.de_users b
|
|
WHERE a.ctid < b.ctid AND a.id_user = b.id_user;
|
|
ALTER TABLE bot.de_users ALTER COLUMN id_user SET NOT NULL;
|
|
ALTER TABLE bot.de_users ADD CONSTRAINT de_users_pkey PRIMARY KEY (id_user);
|
|
|
|
-- unsubscribe
|
|
DELETE FROM bot.unsubscribe a USING bot.unsubscribe b
|
|
WHERE a.ctid < b.ctid AND a.id_user = b.id_user;
|
|
ALTER TABLE bot.unsubscribe ALTER COLUMN id_user SET NOT NULL;
|
|
ALTER TABLE bot.unsubscribe ADD CONSTRAINT unsubscribe_pkey PRIMARY KEY (id_user);
|
|
|
|
-- Суррогатные ключи
|
|
ALTER TABLE bot.actions ADD CONSTRAINT actions_pkey PRIMARY KEY (id_action);
|
|
ALTER TABLE bot.titles ADD CONSTRAINT titles_pkey PRIMARY KEY (id_title);
|
|
ALTER TABLE bot.donats ADD CONSTRAINT donats_pkey PRIMARY KEY (id_donat);
|
|
ALTER TABLE bot.money ADD CONSTRAINT money_pkey PRIMARY KEY (id_money);
|
|
ALTER TABLE bot.eggs ADD CONSTRAINT eggs_pkey PRIMARY KEY (id_egg);
|
|
|
|
-- Индексы
|
|
CREATE INDEX IF NOT EXISTS idx_money_user ON bot.money (id_user);
|
|
CREATE INDEX IF NOT EXISTS idx_eggs_user_action ON bot.eggs (id_user, id_action);
|
|
CREATE INDEX IF NOT EXISTS idx_messages_user ON bot.messages (id_user);
|
|
CREATE INDEX IF NOT EXISTS idx_messages_dt ON bot.messages (dt);
|
|
CREATE INDEX IF NOT EXISTS idx_purifications_user ON bot.purifications (id_user);
|
|
CREATE INDEX IF NOT EXISTS idx_de_users_nick ON bot.de_users (nick);
|