FTS может помочь в этом сценарии, вопрос в том, стоит оно того или нет.
Для начала давайте посмотрим, почему LIKE
может быть не самым эффективным поиском. Когда вы используете LIKE
, особенно при поиске с %
в начале сравнения, SQL Server должен выполнять как проверку таблицы каждой строки , так и побайтную проверку столбец, который вы проверяете.
FTS имеет некоторые лучшие алгоритмы для сопоставления данных, как и некоторые лучшие статистические данные по вариациям имен. Поэтому FTS может обеспечить лучшую производительность для сопоставления Смита, Смайта, Смитерса и т. Д., Когда вы ищете Смита.
Однако использовать FTS немного сложнее, так как вам нужно освоить CONTAINS
против FREETEXT
и тайный формат поиска. Однако, если вы хотите выполнить поиск, в котором совпадают либо FName, либо LName, вы можете сделать это одним оператором вместо ИЛИ.
Чтобы определить, будет ли FTS эффективным, определите, сколько у вас данных. Я использую FTS в базе данных из нескольких сотен миллионов строк, и это реальное преимущество по сравнению с поиском по LIKE
, но я не использую его в каждой таблице.
Если размер вашей таблицы более разумный, менее нескольких миллионов, вы можете получить аналогичную скорость, создав индекс для каждого столбца, по которому вы будете искать, и SQL Server должен будет выполнить сканирование индекса, а не таблицу сканирование. * +1021 *