У меня есть база данных, в которой хранится столбец receiver
, чтобы указать учетную запись, к которой относятся данные (например, «Чарли»).Это, однако, привело к множеству дублирования данных, так как один набор данных может создать 3 отдельные строки, где единственным отличием является столбец receiver
.
|---------------------|------------------||---------------------|------------------|
| Receiver | Event || Date | Location |
|---------------------|------------------||---------------------|------------------|
| Alpha | 3 || 12 | USA |
|---------------------|------------------||---------------------|------------------|
| Bravo | 3 || 12 | USA |
|---------------------|------------------||---------------------|------------------|
| Charlie | 3 || 12 | USA |
|---------------------|------------------||---------------------|------------------|
При изменении базы данных я рассмотрелиспользование массива с индексом GIN вместо текущего индекса B-Tree на приемнике.Моя предлагаемая новая таблица будет выглядеть следующим образом:
|-------------------------------|------------------||------------------|-------------------|
| Receivers | Event || Date | Location |
|-------------------------------|------------------||------------------|-------------------|
| ["Alpha", "Bravo", "Charlie"] | 3 || 12 | USA |
|-------------------------------|------------------||------------------|-------------------|
95% всех запросов в настоящее время имеют вид: SELECT * FROM table WHERE Receiver = Alpha
Кроме того, таблица в настоящее время содержит более 4 млрд.строк, и это сократило бы его до 2 миллиардов строк.
Какой вариант более эффективен?