Насколько мне известно отличие char от varchar в том, что varchar — переменной длины, т.е если varchar(1024) — это строка длиной ДО 1024 символов. Т.е. если в эту строку записать 10 символов, то занимаемый объем будет 12 байт (первые 2 байта — длина строки, 10 — сама строка).
>> Если есть индекс по полю, то что именно лежит в этом поле абсолютно не важно.
Согласен.
Я не силен в оракл, тем более в его типах данных. В ссылке, приведенной вами, ведется обсуждение про строки, размерность которых сравнима между собой. Я же привел пример, про то, что есть разница сравниваем ли мы целочисленные поля, которые занимают 4 байта или же строки которые занимают 15 байт. имхо, очевидно, что сравнить меньшее количество байт быстрее.
Хотел бы возразить по поводу
>> Скорость соединения таблиц сильно зависит от типов и количества полей по которым мы их соединяем
У вас в строковое поле (если я правильно понял) заносится номер строки, т.е. макс кол-во символов для вашего примера = 5 («9999»).
А если рассматривать бОльшие строки.
Мне пришлось столкнуться с ситуацией, когда IP адреса в системе учета трафика хранились в виде строк, а это 15 символов (максимум). Для сравнения я добавил поле int_IP — беззнаковое целое (занимает в mysql 4 байта). Скорость работы скрипта увеличилась в разы (точно не помню, где то в 3-4 раза) при размере таблицы в 10 млн строк.
Тогда уж бинарный поиск:
разделить кучу на две подкучи,
левую подкучу разедиль на две под-подкучи
левую под-подкучу разделить на две под-под-подкучи
....
когда в под-...-подкуче останется один предмет - сравнить с искомым и т.д :)
>> Если есть индекс по полю, то что именно лежит в этом поле абсолютно не важно.
Согласен.
P.S. В моем случае индекса не было.
>> Скорость соединения таблиц сильно зависит от типов и количества полей по которым мы их соединяем
У вас в строковое поле (если я правильно понял) заносится номер строки, т.е. макс кол-во символов для вашего примера = 5 («9999»).
А если рассматривать бОльшие строки.
Мне пришлось столкнуться с ситуацией, когда IP адреса в системе учета трафика хранились в виде строк, а это 15 символов (максимум). Для сравнения я добавил поле int_IP — беззнаковое целое (занимает в mysql 4 байта). Скорость работы скрипта увеличилась в разы (точно не помню, где то в 3-4 раза) при размере таблицы в 10 млн строк.
ИМХО скорость соединения зависит от типов полей.
Не могли бы вы ещё привести алгоритм расчета данной кривой?
разделить кучу на две подкучи,
левую подкучу разедиль на две под-подкучи
левую под-подкучу разделить на две под-под-подкучи
....
когда в под-...-подкуче останется один предмет - сравнить с искомым и т.д :)
Или свитчи по snmp тоже можно?
Синячут - значит синие :)
(с) не помню откуда