В чем большая разница между полнотекстовым поиском в 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 здесь

Другие вопросы по тегам