Ваша идея с таблицей индексации звучит так, как будто она будет работать отлично Единственным недостатком этого является то, что вы должны поддерживать его отдельно, и вы хотите убедиться, что данные, которые вы храните в этой таблице, не дублируются ни в одной из ваших существующих таблиц.
Если вы не хотите поддерживать эти данные иначе, чем в настоящее время, вы можете использовать массивы (или структуры) CF для хранения этих данных корреляции (которые вы должны будете извлечь из базы данных в отдельном файле). запрос), а затем зациклить его, как вы создаете запрос, который извлекает классы для данной страницы.
В любом случае все будет хорошо, все зависит от того, как вы предпочитаете это делать, и что, по вашему мнению, будет проще построить, протестировать и поддерживать.
Одна вещь об эффективности - убедитесь, что вы не только связываете свои таблицы с помощью внешних ключей (что помогает поддерживать целостность данных), но и вставляете (некластеризованные) индексы, что помогает повысить эффективность соединений и поисков, которые будут выполнять ваши запросы. делает.
Я видел драматических улучшений скорости в моих запросах (CFQUERYs, работающих против MS SQL) с простым введением индексов.
В MS SQL вы делаете это так:
CREATE NONCLUSTERED INDEX yourIndexName ON yourTableName(yourFieldName)
Надеюсь, это поможет!