Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Размер поля  [new]
relief
Member

Откуда:
Сообщений: 1197
Привет.

Есть 2 поля: int и varchar.
Какой размер varchar будет занимать столько же места на диске как int?

В чем разница работа джойнов для int и varchar ?
и что быстрей?
2 май 12, 13:55    [12495443]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
iljy
Member

Откуда:
Сообщений: 8711
relief,

смысл этих вопросов в чем? Естественно, с целым числом работа идет гораздо быстрее, на уровне процессорных команд, а с символьными начинаются правила сравнения, кодовые таблицы и т.п. К чему это все?
2 май 12, 14:03    [12495527]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
relief
Member

Откуда:
Сообщений: 1197
iljy
relief,

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


не хватает аргументов почему лучше джойны делать не по строке, а по числу.

а каков эквивалент int в виде varchar?
2 май 12, 14:19    [12495660]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
relief
а каков эквивалент int в виде varchar?
Полный эквивалент - это когда число записано в varchar прописью на каком-либо языке, да.
2 май 12, 14:33    [12495805]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
relief
Есть 2 поля: int и varchar.
Какой размер varchar будет занимать столько же места на диске как int?
2 символа
2 май 12, 14:35    [12495817]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
alexeyvg,
2 символа это для nvarchar
declare @i int
declare @s varchar(4),@s1 varchar(4)
declare @sn nvarchar(4),@sn1 nvarchar(4)
set @i=0
set @s='1234'
set @s1='1'
set @sn='1234'
set @sn1='1'
select datalength(@i),datalength(@s),datalength(@s1),datalength(@sn),datalength(@sn1)
2 май 12, 14:38    [12495862]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
[quot relief]
iljy

не хватает аргументов почему лучше джойны делать не по строке, а по числу.

а каков эквивалент int в виде varchar?


relief, join-ы лучше делать по индексу. Тогда похеру какие там поля.
Если join не по индексу, опять таки, похеру -- и то и другое будет медленно.
2 май 12, 14:41    [12495895]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
не хватает аргументов почему лучше джойны делать не по строке, а по числу.

Для джойнов важнее наличие индексов
2 май 12, 14:41    [12495901]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
denis2710
alexeyvg,
2 символа это для nvarchar
Для nvarchar 1 символ.

Вы забыли, что в каждой записи для каждого поля nvarchar или varchar ещё резервируется 2 байта для указания длинны.
2 май 12, 14:47    [12495968]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
relief
Member

Откуда:
Сообщений: 1197
именно индексы? если будет primary key и связь по foreign key?

и еще кластерный/некластерный индекс играет роль для джойна?
2 май 12, 14:48    [12495985]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
relief
именно индексы? если будет primary key и связь по foreign key?

и еще кластерный/некластерный индекс играет роль для джойна?
Всё играет роль, и тип поля - в последнюю очередь, хотя уменьшение размера и упрощение вычислений конечно внесут вклад процентик-другой.
2 май 12, 14:52    [12496026]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
и связь по foreign key?

foreign key - это декларация целостности
Какое отношение она имеет к джойнам ?

relief
и еще кластерный/некластерный индекс играет роль для джойна?

Разумеется. Ведь для получения информации из полей их придется читать откуда-то
2 май 12, 14:58    [12496108]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
foreign key - это декларация целостности
Какое отношение она имеет к джойнам ?



я имею ввиду если у меня будет одна таблица с первичным ключом, а во второй будет foreign key по ней, но при этом не будет никаких индексов, это как это будет сопоставимо по скорости, если бы не было никаких primary key, а просто были бы индексы?
2 май 12, 15:39    [12496524]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
но при этом не будет никаких индексов, это как это будет сопоставимо по скорости,

Скорость чего вы собрались мерять то ?
2 май 12, 15:39    [12496531]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
relief
Glory
foreign key - это декларация целостности
Какое отношение она имеет к джойнам ?



я имею ввиду если у меня будет одна таблица с первичным ключом, а во второй будет foreign key по ней, но при этом не будет никаких индексов, это как это будет сопоставимо по скорости, если бы не было никаких primary key, а просто были бы индексы?
Если создать такой же индекс, как создаётся для primary key, то всё равно.
2 май 12, 15:40    [12496540]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Glory
relief
не хватает аргументов почему лучше джойны делать не по строке, а по числу.

Для джойнов важнее наличие индексов

А размер индесируемых полей?
2 май 12, 15:41    [12496553]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
Glory
Member

Откуда:
Сообщений: 104751
Мистер Хенки
А размер индесируемых полей?

BOL - Maximum Capacity Specifications for SQL Server
Bytes per index key - 900
2 май 12, 15:47    [12496620]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
но при этом не будет никаких индексов, это как это будет сопоставимо по скорости,

Скорость чего вы собрались мерять то ?


случай 1.

Таблица Clients

ClientID int primary key
ClientName nvarchar(50)

Таблица Sales

SaleId
ClientID  (relationshp to Clients table)


случай 2

Таблица Clients

ClientID int Clustered index
ClientName nvarchar(50)

Таблица Sales

SaleId
ClientID  (no relationshp to Clients table)


какой вариант предпочтительней если надо только показывать продажи с именем клиента?
2 май 12, 15:49    [12496643]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
какой вариант предпочтительней если надо только показывать продажи с именем клиента?

"показывать продажи с именем клиента" - это такой запрос ?
2 май 12, 15:53    [12496693]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
iljy
Member

Откуда:
Сообщений: 8711
relief,

вы ерундой занимаетесь. тип данных выбирается достаточный для хранения данных. Если у вас там целое (или нецелое) число - так и храните его как число и не парьте мозг ни себе, ни серверу. Чего вы добиться-то пытаетесь?
2 май 12, 16:10    [12496835]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
какой вариант предпочтительней если надо только показывать продажи с именем клиента?

"показывать продажи с именем клиента" - это такой запрос ?



select s*., c.ClientName
 from sales s
   inner join Clients as c
2 май 12, 16:10    [12496843]     Ответить | Цитировать Сообщить модератору
 Re: Размер поля  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
relief
Glory
пропущено...

"показывать продажи с именем клиента" - это такой запрос ?



select s*., c.ClientName
 from sales s
   inner join Clients as c
Лучьше кластерный.
2 май 12, 17:19    [12497331]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить