#sql-server #sql-server-2012 #full-text-search #lucene.net
#sql-server #sql-server-2012 #полнотекстовый поиск #lucene.net
Вопрос:
На странице полнотекстового поиска http://msdn.microsoft.com/en-us/library/ms189760.aspx в MSDN говорится, что если вы хотите выполнить полнотекстовый поиск по нескольким таблицам, просто «используйте объединенную таблицу в вашем предложении FROM для поиска в результирующем наборе, который является произведением двух или более таблиц».
Мой вопрос в том, не будет ли это очень медленно, если вам нужно объединить две очень большие таблицы? Если я объединяю таблицу продуктов с таблицей категорий и в ней миллионы записей, не займет ли объединение много времени, а затем придется искать после объединения?
Ответ №1:
Объединение миллионов записей все равно может быть быстрым, если объединение оптимизировано для производительности, например, для одного столбца int, который индексируется в обеих таблицах. Но могут быть и другие факторы, поэтому лучший подход — попробовать и оценить производительность самостоятельно.
Если соединение не выполняется должным образом, у вас есть несколько вариантов:
- Создайте представление объединенных таблиц, создайте полнотекстовый индекс в этом представлении и выполняйте полнотекстовые запросы к этому представлению.
- Создайте 3-ю таблицу, которая представляет собой комбинацию 2 таблиц, к которым вы присоединяетесь, создайте для нее полнотекстовый индекс и выполняйте свои полнотекстовые запросы к этой таблице. Для его обновления вам понадобится что-то вроде процесса ETL.