2009-09-17 4 views
1

Мне нужно добавить новый столбец в существующую таблицу на работе, и мне интересно, следует ли создавать его как тинейтовый или битовый тип данных. Недавно наша компания обновилась с SQL Server 2000 до 2008 года, а IIRC мой босс сказал, что в SQL Server 2000 есть проблемы при попытке использовать биты. Я думаю, он сказал, что они связаны с индексами и/или группировкой - я забыл.SQL Server 2008: tinyint vs bit

Какие факторы следует учитывать при выборе между tinyint и bit, если единственными значениями, которые я планирую хранить, являются true/1 или false/0? Существуют ли какие-либо правила SQL Server 2000, которые я могу/должен отучить?

ответ

4

Проблема в 2000 году была немного не может быть частью индекса. Это логично, так как бит имеет только два состояния. Это очень плохое поле для индекса. В 2005 году вы можете создавать закрытые индексы, которые позволяют указывать дополнительные фрагменты данных для хранения с индексом. Это позволяет избежать поиска в закладке.

Я бы пошел с бит.

+0

Это вид информации я искал. Знаете ли вы о каких-либо дополнительных функциях в SQL Server 2008, которые могли бы дополнительно устранить проблемы с производительностью при использовании битов? –

+0

Нет, не с головы. – JoshBerke

1

бит обычно используется для булевых значений. Если все, что вы храните в db, являются логическими значениями, то я думаю, что tinyint будет излишним.

2

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

SQL Server Database Engine оптимизирует хранение столбцов бит. Если в таблице есть 8 или менее столбцов, столбцы хранятся как 1 байт. Если имеется от 9 до 16 бит столбцов, столбцы хранятся как 2 байта и так далее.

bit (Transact-SQL)

SQL Server 2005 делает то же

Смежные вопросы