sql производительность таблицы соответствия - PullRequest
4 голосов
/ 21 марта 2011

У меня есть таблица поиска, которая является основной таблицей пар id-значение. Эта таблица используется для хранения статических данных, таких как: все страны, валюты и т. Д.

Таким образом, у других таблиц есть currency_id, country_id.

У меня есть сложный sql, который возвращает кучу таких идентификаторов. Чтобы получить фактические значения, есть 2 варианта:
1. Используйте соединение с таблицей поиска
2. В проекте предыдущий разработчик реализовал функцию, благодаря которой у него есть класс enum для страны, класс enum для валюты и т. Д.
Поэтому он просто выбирает идентификатор из набора результатов sql и ищет значение, используя класс enum. По его мнению, это быстрее.

Я, конечно, могу определить, указав время начала и окончания, которое быстрее, sql join или enum lookup.
Но без этого можно ли предсказать, какой из них будет быстрее?

1 Ответ

5 голосов
/ 21 марта 2011

Две причины:

  • У вас есть справочная таблица для удаления аномалий изменения данных.То есть вы можете изменять данные в одном месте только при изменении данных поиска.Теперь вам нужно скомпилировать и выпустить
  • СУБД, предназначенные для JOIN.Enum - это все еще JOIN только в коде клиента

Примечание:

Вы не должны иметь одну таблицу поиска в "One"True Lookup table "(OTLT) антишаблон.В таблице хранится только одна сущность.

(добавлено в декабре 2011 г.):

  • Как обеспечить правильное значение поиска вПравильная таблица?
  • У вас будет более одного клиента БД в какой-то момент, не запутывайте данные перечислениями

На DBA.SEнет поддержки Enums или OTLT:

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