SQL Server VARCHAR (2) объединяет производительность против INT - PullRequest
0 голосов
/ 18 декабря 2009

У меня есть таблица q-грамм (2 буквенные строки). Мне нужно присоединить к этому другую таблицу в поле CHAR (2).

Было бы быстрее преобразовать эти 2 грамма в число (например, aa = 1, ab = 2, ac = 3) и преобразовать поля как в этой таблице, так и в ссылочной таблице в INT и объединить, используя INT а?

С уважением

Peter

Ответы [ 4 ]

1 голос
/ 18 декабря 2009

НЕТ , это, вероятно, не будет более производительным, и, кроме того, вам понадобится дополнительная таблица для хранения этих сопоставлений.

Это будет дополнительный JOIN aswell.

Только не забудьте применить правильные индексы для столбцов соединения.

1 голос
/ 18 декабря 2009

Наверное, нет. И если бы вы были, было бы лучше использовать smallint вместо int. Кроме того, я не уверен, имеет ли смысл иметь столбец varchar (2). Использование столбцов varchar требует дополнительных затрат, и в большинстве случаев вы экономите только один байт.

Сколько строк данных у вас будет?

0 голосов
/ 18 декабря 2009

По моему опыту, замена ключа для одного соединения со строки (особенно CHAR (2)) на INT не будет иметь ощутимых различий. Это связано с тем, что большая часть ваших накладных расходов связана с вводом-выводом, а не с процессором.

Как только вы попадаете на более длинные строки (особенно строки Unicode), вы можете начать измерять разницу. Но даже тогда, я думаю, это больше связано с увеличением ввода-вывода из-за размера записи в данных и индексах.

0 голосов
/ 18 декабря 2009

Это будет ваша бутылочная горлышко? Это будет стоить дополнительной сложности?

Тем не менее, вы могли бы также сделать это CHAR(2).

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