Лучший способ хранить теги в таблице сервера sql?

StackOverflow https://stackoverflow.com/questions/145185

  •  02-07-2019
  •  | 
  •  

Вопрос

Как лучше всего хранить теги для записей?Просто использовать поле varchar?А как насчет выбора строк, содержащих тег x?Использовать оператор Like?

Спасибо!

Это было полезно?

Решение

Зависит от двух вещей:
1) Количество тегов/записей с тегами
2) Имеете ли вы религиозное мнение о нормализации или нет :-)

Если вы не имеете дело с очень большими объемами данных, я бы предложил иметь таблицу «Теги», сопоставляющую значения varchar с целочисленными идентификаторами, а затем вторую таблицу, сопоставляющую помеченные записи с их идентификаторами тегов.Я бы предложил сначала реализовать это, а затем проверить, не соответствует ли это вашим потребностям в производительности.В этом случае сохраните одну таблицу с идентификатором помеченной строки и фактическим текстом тега, но в этом случае я бы предложил вам использовать столбец char, поскольку он уничтожит ваш запрос, если оптимизатор выполнит полное сканирование таблицы по большая таблица со столбцом varchar.

Другие советы

Несколько идей и тестов специально для вас: http://tagged.pui.ch/post/37027746608/tagsystems- Performance-tests

Нет, обычно это плохая идея помещать несколько фрагментов данных в одно поле.Вместо этого используйте отдельную таблицу тегов (возможно, содержащую только идентификатор тега и имя тега), а затем для каждой записи укажите связанный с ней идентификатор тега.Если запись связана с несколькими тегами, у вас будут повторяющиеся записи с той лишь разницей, что это TagID.

Преимущество здесь в том, что вы можете легко выполнять запросы по тегам, по записям и хранить таблицу тегов отдельно (т. е.что, если имя тега изменится?).

Используйте таблицу тегов с наименьшим допустимым первичным ключом.Если тегов меньше 255, используйте байт (tinyint) или слово (smallint).Чем меньше ключ, тем меньше и быстрее индекс внешнего ключа в основной таблице.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top