Я никогда не внедрял систему тегов, но, скорее всего, скоро это сделаю для проекта, над которым я работаю. Я в первую очередь парень из базы данных, и мне приходит в голову, что из соображений производительности лучше связать ваши помеченные объекты с ключевыми словами тега через таблицу разрешений. Так, например, с примерами таблиц, таких как:
TechQuestion
TechQuestionID (pk)
SubjectLine
QuestionBody
TechQuestionTag
TechQuestionID (pk)
TagID (pk)
Активный (проиндексированный)
Tag
TagID (pk)
TagText (проиндексированный)
... вы добавляете новые записи в таблицу тегов только при использовании ранее не использованных тегов. Вы повторно свяжете ранее предоставленные теги через запись таблицы TechQuestionTag. И ваш запрос на получение TechQuestions, относящийся к данному тегу, будет выглядеть так:
SELECT
q.TechQuestionID,
q.SubjectLine,
q.QuestionBody
FROM
Tag t INNER JOIN TechQuestionTag qt
ON t.TagID = qt.TagID AND qt.Active = 1
INNER JOIN TechQuestion q
ON qt.TechQuestionID = q.TechQuestionID
WHERE
t.TagText = @tagText
... или что там у тебя. Я не знаю, возможно, это уже было очевидно для всех, но я думал, что выложу это туда ... потому что я не верю, что альтернатива (избыточные, проиндексированные, записи с текстовыми тегами) не будет запрашиваться как эффективно.