В чем большая разница между полнотекстовым поиском в SQL2000 и SQL2008?
Мой первый тест, чтобы получить заданную базу данных с активированным fulltextsearch, запущенным на sql2008, потерпел неудачу с результатом, что она ползет. sql2008 занял несколько раз sql2000, но почему?
2 ответа
Полнотекстовые движки в SQL 2000 и SQL 2008 совершенно разные.
В SQL 2000, когда вы отправляете полнотекстовый запрос в базу данных, он просматривает весь полнотекстовый индекс и возвращает все совпадающие строки в полнотекстовый запрос обратно, а затем фильтрует их по строкам, возвращаемым вашим запросом, используя обычную фильтрацию, которая Вы поставили в качестве табличных фильтров.
В SQL 2008 сначала применяются фильтры таблиц, затем эти rowIds отправляются в полнотекстовый поиск, а полнотекстовый поиск выполняется для строк, соответствующих поиску в таблице.
Возможно, вам придется переписать ваш запрос, чтобы повысить производительность запроса в другой версии.
Также в SQL 2008 полнотекстовый индекс хранится в файле данных SQL, а поиск выполняется SQL Server Engine. В SQL Server 2000 полнотекстовый индекс хранится вне файлов базы данных, а поиск индекса обрабатывается сервером индексирования.
Для получения дополнительной информации вы можете увидеть опыт Брента с различиями и узнать, как влияет StackOverflow здесь