Конечно, будет более производительным иметь маленький «активный» стол.Наиболее очевидной ценой является то, что правильное ведение записей более проблематично, чем с одной таблицей.Я бы, вероятно, не сделал бы это сразу, но учту это как потенциальную оптимизацию.
Индекс в активном столбце значительно улучшит ситуацию.Более того, будет ли индекс из нескольких столбцов (или индексы) соответствовать наиболее часто используемому запросу (или запросам).Например, если вы часто запрашиваете активные строки, созданные после определенной даты, то для получения можно использовать индекс как для даты, так и для активной.Аналогично, если вы хотите, чтобы все активные строки были упорядочены по идентификатору, то можно было бы использовать одну и для идентификатора, и для активной.
Тестирование с помощью помощника по настройке ядра СУБД здесь может быть очень информативным, но не настолько хорошим, чтобы предсказывать, что лучшеподход к данным, которые вы ожидаете изменить в ближайшие месяцы - как вы делаете здесь.
Индексированное представление вполне может быть вашим лучшим подходом, поскольку таким образом вы можете создать наиболее близкую вещь к частичному индексу, который доступен вSQLServer 2005 (который ваши теги предполагают, что вы используете).См. http://technet.microsoft.com/en-us/library/cc917715.aspx#XSLTsection124121120120 Это создаст индекс на основе ваших общих критериев поиска / объединения / порядка, но только по соответствующим строкам (полностью игнорируя остальные).
Еще лучше, если вы можете использовать SQLServer2008, затем используйте отфильтрованный индекс (то, что Microsoft решила назвать частичными индексами).См. http://technet.microsoft.com/en-us/library/cc280372.aspx, чтобы узнать больше о них.
Если бы вы отметили 2008, а не 2005, я бы определенно предложил бы отфильтрованные индексы, как я бы, вероятно, выбрал индексированное представление, номожет просто пойти на многостолбцовый индекс.