Как мне спроектировать мои таблицы для одновременного доступа к просмотру таблиц? - PullRequest
0 голосов
/ 14 апреля 2011

Мне нужно удерживать несколько пар по 70000 строк и выполнять сравнение различий, например, операций между ними, используя оператор минус. В любое время возможны сравнения (сканирование таблицы).

В настоящее время у меня есть одна таблица с таким дизайном:

  • первичный ключ (секвенированный)
  • внешний ключ для идентификации набора
  • ключ для идентификации набора № 1 или набора № 2
  • тогда данные здесь мне нужно минус против

Данные будут выглядеть примерно так

| PK | FK | Key   | Data      |
| 1  | 1  | Left  | Some data |
| 1  | 1  | Left  | Diff data |
| 1  | 1  | Right | Some data |

Мой запрос будет:

SELECT data
FROM diffTable
WHERE pk = 1
AND fk = 1
AND key = 'Left'

MINUS

SELECT data
FROM diffTable
WHERE pk = 1
AND fk = 1
AND key = 'Right'

Боюсь, что при полном сканировании таблицы будут монополизированы ресурсы и пострадают последующие вставки и минус.

Как мне оформить столы и почему?

1 Ответ

1 голос
/ 14 апреля 2011

<code>create index PK_FK on diff_table
   (PK, FK, Key);

Запрос, который вы разместили в своем вопросе, будет работать очень быстро с этим индексом.

Кстати, столбец PK сам по себе не является первичным ключом.Смотрите другие комментарии.Возможно, вы хотите:

alter table diff_table
  add constraint PK_FK primary key (PK, FK, Key);

возможно, выберите лучшее имя ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...