Есть ли способ индексировать столбец varchar как дату и время? - PullRequest
3 голосов
/ 28 сентября 2010

Я запрашиваю столбец varchar, который содержит все действительные даты и времени. В запросе я преобразовал столбец в datetime.

Имейте в виду, что изменение определения типа данных столбца на datetime невозможно. Просто поверь мне, это не вариант.

Посредством анализа запросов я вижу, что запрос был бы намного быстрее, если бы я мог добавить индекс для этого столбца. Но это varchar. Если я добавлю индекс, он будет индексироваться в зависимости от значения varchar, верно? Но я бы хотел, чтобы оно указывало на значение datetime, да?

Могу ли я здесь что-нибудь сделать для индекса?

Ответы [ 2 ]

6 голосов
/ 28 сентября 2010

Допустимые данные являются первым приоритетом, потому что любой подход, который преобразует данные в DATETIME, вернет значение 1 января 1900 года в полночь, когда значение не соответствует принятому формату.

SQL Server неУ него нет индексов на основе функций, поэтому вы можете выбрать следующие параметры:

  1. A вычисляемый столбец , при условии, что вы можете использовать операторы ALTER TABLE для добавления столбцов в таблицу.После этого вы можете проиндексировать этот столбец.
  2. Индексированное представление (материализованное представление AKA) , если ваши данные соответствуют требованиям
  3. Промежуточная таблица, клонированная из оригинала (и настроить, если хотите) куда вы импортируете данные из существующей таблицы, чтобы вы могли индексировать и манипулировать ею
3 голосов
/ 28 сентября 2010

Рассматривали ли вы создание индексированного представления поверх этих сгенерированных таблиц? Вы можете определить преобразование varchar-to-datetime в представлении, а затем проиндексировать полученный столбец.

См. Повышение производительности с помощью индексированных представлений SQL Server 2005 для получения дополнительной информации. Я не эксперт по использованию индексированных представлений, я только читал о них. Поэтому я предоставлю вам возможность выяснить, будет ли это правильным решением в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...