В последние годы методология " Вставка только " стала все более популярной.Для тех, кто использует SQL DB, вы, вероятно, знаете, что в большом объеме с большим количеством запросов update DB блокирует строки, и вы начинаете получать «узкое место». Режим вставки * - использовать только вставку (без обновлений) и всегда извлекать самый последний элемент в БД.
Проблема, с которой я сталкиваюсь, связана с запросами SELECT, поскольку существуетполе, которое может быть общим для нескольких записей в БД, и если я захочу сделать запрос по нему, я никогда не узнаю, когда получу все последние записи для указанного выше поля (если только я не использую GROUP иэто не будет эффективным)
Пример схемы:
Допустим, у меня есть следующая схема:
CREATE TABLE users
(
id SERIAL NOT NULL
CONSTRAINT users_pkey
PRIMARY KEY,
first_name VARCHAR(255),
last_name VARCHAR(255),
username VARCHAR(255),
email VARCHAR(255),
password VARCHAR(255),
account_id INTEGER,
created_at TIMESTAMP NOT NULL
);
Теперь, допустим, у меня есть следующие пользователи, которые связаны с учетной записьюномер 1 (используя account_id): 1. John Doe 2. Jain Doe
Если я захочу отредактировать фамилию John Doe в режиме «Только вставка», я вставлю новую запись, а когда захочу ее восстановитьЯ выполню следующий запрос:
SELECT * from users WHERE email='jhon.doe@test.com' ORDER BY created_at Desc limit 1;
Вопрос в том, что мне нужно, если я хочу получить всех пользователей учетной записи 1?как я могу предотвратить выполнение плохого запроса с группой по
Следующий запрос вернет 3 записи, хотя у меня только 2 пользователя
SELECT * from users WHERE account_id=1;