jamuro77
Привет,
Конечно, вы можете создать индекс на varchar, особенно на полях, которые, как предполагается, будут часто фильтроваться в вашем приложении. Но самое главное - правильно выбрать поля для создания индекса. Вы должны выбрать наиболее избирательные поля. Если нет, то индексы могут и не использоваться, это будет зависеть от" статистики", но вероятность будет невелика. Например, вы можете использовать индексы, если ваши запросы похожи на:
выберите * из таблицы, где ColumnIndexedName = 'Value'
выберите * из таблицы, где ColumnIndexedName like ' Value%'
Но индекс не будет использоваться, если вы используете:
выберите * из таблицы, где ColumnIndexedName like '%Значение'
Я бы сказал, что единственная разница между использованием int или тип varchar столбцы для построения индексов - это тот факт, что последние будут занимать меньше места для хранения значений, и, возможно, это может сделать запрос быстрее. То же самое относится и к созданию первичных ключей...
Заключить:
1) вы также можете создавать индексы для нескольких полей, объединяя типы int и varchar, уделяя особое внимание фильтрации всегда по первому полю, определенному в индексе. Если вы просто отфильтруете с помощью второго поля индекс использоваться не будет.
2) Старайтесь избегать использования оператора"*". Я имею в виду, используйте только те поля, которые вам нужны в вашем конечном наборе результатов. Если все столбцы могут быть возвращены из индекса, запрос будет "покрыт", и это будет здорово для производительности. Поэтому подумайте о включении новых "дополнительных столбцов" для хранения в индексе, если это возможно, в соответствии с вашими требованиями приложения.
С уважением!
Member 12424653
но varchar может иметь шансы на дублирование значений в столбце, если у него есть операторы более 2 строк типа " is "или"are", а индекс должен быть уникальным значением. как мы можем избежать их?
jamuro77
Индексы могут быть "уникальными"или" не уникальными". Если вы хотите иметь уникальные значения в одном поле (или комбинации полей), вы должны создать "уникальный" индекс для этих полей. В дополнение к этому вы также можете создавать "уникальные" ограничения для столбцов.