powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 char vs varchar
8 сообщений из 8, страница 1 из 1
ASE 12.5 char vs varchar
    #36257574
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа,
подскажите в чём разница между char и varchar.
В теории понятно, что char добивает пробелами значение до указанной длинны, а varchar занимает столько места сколько значение + 2 бита на хранение длины.

Когда происходит insert, что быстрее char или varchar?
Когда просто читаем, есть ли разница если индекс на char или varchar?


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

Заранее большое спасибо
...
Рейтинг: 0 / 0
ASE 12.5 char vs varchar
    #36257705
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kru Когда происходит insert, что быстрее char или varchar?

Одинаково, это сказывается больше на Updat'ах!

Kru Когда просто читаем, есть ли разница если индекс на char или varchar?

При чтении тоже одинаково! Хотя при varchar индекс может быть меньше, а значит и быстрей!
...
Рейтинг: 0 / 0
ASE 12.5 char vs varchar
    #36258068
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_DenKru Когда происходит insert, что быстрее char или varchar?

Одинаково, это сказывается больше на Updat'ах!

Kru Когда просто читаем, есть ли разница если индекс на char или varchar?

При чтении тоже одинаково! Хотя при varchar индекс может быть меньше, а значит и быстрей!

Большое спасибо!
А можно попродробнее - как сказывается на update?

Char реально хранит пробелы или ужимается до актуального значения.

По поводу индексов - нужно ли обязательно ставить поля переменной длины в конец (в случае с композитными индексами)?

Заранее большое спасибо.
...
Рейтинг: 0 / 0
ASE 12.5 char vs varchar
    #36258096
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут нашёл интересную статейку - смысл которой - только char not null добиваются пробелами, char null ведёт себя как varchar

Какая-тогда получается разница при выборе между char и varchar для nullable столбцов?

Заранее спасибо.
...
Рейтинг: 0 / 0
ASE 12.5 char vs varchar
    #36258107
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, за монолог :-)

Но, кажись, нашёл, что искал - тынц

* Data in fixed-length columns is blank-padded to the column length. For the char and unichar datatypes, storage size is n bytes, (unichar = n*@@unicharsize); for the nchar datatype, n times the average national character length (@@ncharsize). When you create a char, unichar, or nchar column that allows nulls, Adaptive Server converts it to a varchar, univarchar, or nvarchar column and uses the storage rules for those datatypes. This is not true of char and nchar variables and parameters.
* Data in variable-length columns is stripped of trailing blanks; storage size is the actual length of the data. For varchar or univarchar columns, this is the number of characters; for nvarchar columns, it is the number of characters times the average character length. Variable-length character data may require less space than fixed-length data, but it is accessed somewhat more slowly.

Последний вопрос - почему varchar более медленная?

Заранее спасибо.
...
Рейтинг: 0 / 0
ASE 12.5 char vs varchar
    #36258275
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kru wrote:

> подскажите в чём разница между char и varchar.
> В теории понятно, что char добивает пробелами значение до указанной
> длинны, а varchar занимает столько места сколько значение + 2 бита на
> хранение длины.

два байта, наверное ?
На самом деле нет никаких двух байт, если я не ошибаюсь, посколку
длина поля и так переменная в ASE, то ничего дополнительно не хранится.

> Когда происходит insert, что быстрее char или varchar?

При одинаковых длинах в скобках конечно varchar быстрее. Просто потому
что он в среднем короче. CHAR(20) в среднем имеет длину 20, VARCHAR(20)
в среднем (при равномерном распред.) имеет длину 10.

Другой вопрос, что разница конечно не катастрофическая. И зависит, естественно,
от реальных данных.

> Когда просто читаем, есть ли разница если индекс на char или varchar?

В индексе всегда данные префиксно сжимаются. Там разницы нет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 char vs varchar
    #36258279
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kru wrote:

> Какая-тогда получается разница при выборе между char и varchar для
> nullable столбцов?

nullable char врутри всё равно хранится как varchar, где-то это было написано.

Но мой совет -- не гонитесь за этими фиговыми выигрышеми,
исходите из семантики данных.
Фиксированная длина -- CHAR. Переменная -- VARCHAR. Ну и я реально
CHAR -поля очень редко бывают, только разве что полусурогатные ключи
какие-то, шифры искусственные, но внешние для БД.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 char vs varchar
    #36260577
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Kru wrote:

> Какая-тогда получается разница при выборе между char и varchar для
> nullable столбцов?

nullable char врутри всё равно хранится как varchar, где-то это было написано.

Но мой совет -- не гонитесь за этими фиговыми выигрышеми,
исходите из семантики данных.
Фиксированная длина -- CHAR. Переменная -- VARCHAR. Ну и я реально
CHAR -поля очень редко бывают, только разве что полусурогатные ключи
какие-то, шифры искусственные, но внешние для БД.


Большое спасибо за отклик.
Да я и не гоняюсь, собственно. На собеседовании спросили :-) и я поплыл :-(
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 char vs varchar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]