Поиск, начинающийся с %
, не является sargable , поэтому даже имея индекс по данному столбцу, вы не сможете использовать его эффективно.
Вы уверены, что вам нужно искать с PATINDEX
каждый раз?Таблица с 90 миллионами записей невелика, но с большим количеством столбцов и неправильным применением нормализации может наверняка снизить производительность.
Я посоветую пересмотреть таблицу и проверить, можно ли далее нормализовать данные.Это может привести к повышению производительности в отдельных случаях и уменьшению размера хранилища таблиц.
Например, zipcode
можно переместить в отдельную таблицу, и вместо этого, используя строку zipcode
, можно объединить целое числоколонка.Попробуй нормализовать адрес дальше - есть ли у тебя город, улица или квартал, улица или номер блока?Имена - если вам нужно искать по имени, фамилии просто разделяют имена на отдельные столбцы.
Для строковых значений данные могут быть обработаны - удалите пустые строки в начале и в конце (trim)например.И имея такие данные, мы можем создавать хэш-индексы и получать чрезвычайно быстрый равный поиск.
Я хочу сказать, что если вы нормализуете свои данные и добавите некоторые правила (на уровне базы данных и приложения), чтобы обеспечить вводданные верны, у вас будет очень хорошая производительность.И это долгий путь, но вы собираетесь это сделать - это легче сделать сейчас, чем позже (вы опоздали и сейчас).