Индексируйте varchar на SQL Server MS 2005

Я создал пустое приложение WPF с рамкой и смог перехватить событие нажатия клавиши. Как только приложение запускается, я фокусирую кадр. Вы можете сделать то же самое, когда ваша страница загружается или ваш рабочий процесс начинается заново.

<Frame Loaded="FrameworkElement_OnLoaded" KeyUp="UIElement_OnKeyUp">
    <Frame.Content>
        <Page>
            <Label Content="Hello"></Label>
        </Page>
    </Frame.Content>
</Frame>

private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e)
{
    ((Frame)sender).Focus();
}

private void UIElement_OnKeyUp(object sender, KeyEventArgs e)
{
    MessageBox.Show("Key pressed");
}
6
задан Andy Lester 16 October 2008 в 02:27
поделиться

5 ответов

Ваш varchar(max)? Я думаю, что им не разрешают использоваться в индексе.

Иначе отправьте Ваш CREATE TABLE оператор, обычно нет никакой проблемы, добавляющей a varchar к индексу.

10
ответ дан 8 December 2019 в 13:51
поделиться

Я предполагаю, что Ваш - VARCHAR (МАКС) столбец, который, как ошибка говорит, является invalida типом данных для индекса. Предложение: создайте вычисляемый столбец, который является значением хэш-функции VARCHAR (МАКС), столбец (например, использование функции HashBytes) затем создает индекс на вычисляемом столбце только. Затем в условии поиска (например, Оператор Where) Вашего DML SQL Вы использовали бы обоих VARCHAR (МАКС), поиск ценит себя плюс хеш Вашего VARCHAR (МАКС) поисковое значение на соответствующих столбцах в Вашей таблице. Это может быть хорошая идея инкапсулировать хеширование поисковых значений в хранимой процедуре 'помощника'.

4
ответ дан 8 December 2019 в 13:51
поделиться

Нет, идентификатор + varchar столбец не работал бы. Это работало бы отлично для запросов, где Вы делаете поиск на идентификаторе и только выбираете идентификатор или/и varchar столбец - затем у Вас был бы закрывающий индекс, и все могло быть получено только путем рассмотрения индекса.

Я предполагаю, что у Вас есть кластерный индекс на Вашем столбце ID, поскольку это - первичный ключ. Затем необходимо было бы создать некластеризованный индекс на varchar столбце - который должен быть возможным. Некластеризованный индекс будет автоматически включать идентификатор также.

Также помните, что индекс только будет хорош для запросов как ГДЕ VarcharColumn = 'xyz' и ГДЕ VarcharColumn КАК 'xyz %'.

Это не поможет для ПОДОБНОГО '%xyz %' и запросам '%xyz'.

2
ответ дан 8 December 2019 в 13:51
поделиться

При установке столбца, поскольку первичный ключ на значение по умолчанию создает кластерный индекс, таким образом, Вы не должны создавать другой индекс INT+VARCHAR.

То, что Вы ищете, является индексом на Вашем один VARCHAR - без +INT, так как Ваш первичный ключ неявно включен - после того, как весь SQL Server должен смочь определить местоположение фактической строки при выполнении индексных поисков. Существует ограничение, хотя, я полагаю, что полный размер столбцов индекса должен быть <900 байтов (по крайней мере, это было с SQL Server 2000). Какой длины Ваш VARCHAR?

1
ответ дан 8 December 2019 в 13:51
поделиться

Вы не должны включать varchar поле в первичный ключ для него, чтобы быть индексированными. Для создания индекса просто изменяют таблицу в Studio управления, нажимают на кнопку Manage Indexes и Keys и нажимают Add для добавления нового индекса. Затем выберите поле VARCHAR. Не должно быть никакой проблемы.

0
ответ дан 8 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: