0

У меня есть два вопроса.Полнотекстовая индексация vs %% и кластеризованный индекс

  1. Имеет ли смысл, когда мне нужно выбирать кластерный индекс в столбце типа Integer вместо того, чтобы выбирать его по столбцам типа string.

Почему?

кластерный индекс будет вызывать изменение порядка данных страницы всякий раз, когда INSERT обрабатывается, потому что новая строка не добавляется в конце индекса, но вставляется в средней

я прав? Любая другая причина для выбора кластерного индекса для столбца типа Integer? Или я двигаюсь в неправильном направлении?

  1. Когда я должен искать строку, используя %...%, как показано ниже запроса

    Select Column1 From Table1 Where Column1 Like '%SomeVal%' 
    

я следующие вопросы для этого.

  1. Имеет смысл использовать %....% в вышеуказанной ситуации?
  2. Могу ли я поместить кластеризованный индекс для Column1, а затем перейти на %....%
  3. Должен ли я выбирать полнотекстовое индексирование? Если да, почему я должен предпочесть полнотекстовое индексирование за %...%?
+5

префикс с '%' сделает сканирование индекса в лучшем случае. Ваши вопросы не имеют смысла. Вместо того, чтобы рассказать нам о своем воспринимаемом решении, расскажите нам о реальной проблеме, которую вы пытаетесь решить. –

+0

@mitchwheat - сэр, мой запрос основан на предикате. Как упоминалось в запросе. – Pankaj

+0

, который не помогает ..... –

ответ

4
  1. Да, SQL Server (и компьютеров вообще) быстрее просматривая списки номеров, чем они в списках текста. Это означает, что обычно быстрее искать запись WHERE ID = 3, чем WHERE FirstName = 'BOB'. Это отлично работает, если вы настроены на систему, чтобы отслеживать одно или другое, например, когда пользователь нажимает на продукт, который вы можете выбрать для хранения ProductID или ProductName, ProductID будет работать быстрее. Однако, если единственный столбец, который будет в этом предложении WHERE, является текстовым файлом, например, вы всегда ищете фильм по его названию, то вам, вероятно, лучше разместить свой кластерный индекс в этом столбце. Как правило, у меня есть целое число ID с кластеризованным индексом, а затем помещается некластеризованный индекс в другое поле, но это действительно зависит от ситуации.

  2. FTS основан на словах, в то время как подстановочные знаки (%) основаны на шаблонах, поэтому, если вам нужно искать текстовое поле для «Патрисии», FTS, вероятно, будет вашим лучшим выбором, но если вам нужно искать " Pat% ", чтобы искать« Патрик »или« Патти »или« Патриция », FTS не будет работать хорошо. Я надеюсь, что в этом есть смысл. Найдите StackOverflow или google для «fts vs like», и вы получите несколько обсуждений по этому вопросу.

Смежные вопросы