алгоритм B-tree

MiksIr

miksir@home:~$
Мне вот чего интересно было на самом деле - используются ли collation при поиске по индексу или только при построении индекса и то в случае индекса без учета регистра... если там бинарное сравнение строки со строками в узлах индекса и "больше-меньше" так же банально.
 

x-yuri

Новичок
и при построении и при поиске, если тип столбца подразумевает строку символов (VARCHAR, CHAR, ...).

Чтобы сравнить (<, >) две строки символов нужен collation, т.е. мы должны сравнивать посимвольно и знать порядок символов (collation), т.е. 'a' > 'b' или наоборот и т.д.

Все просто, пока сравниваются строки одинаковых collation, в этом случае все усложняется (http://dev.mysql.com/doc/refman/5.0/en/charset-collate-tricky.html), но мне это пока не пригодилось

-~{}~ 24.12.08 01:34:

по байтово строки сравниваются только тогда, когда мы работаем со строками байтов (VARBINARY, BINARY, ...)
 

fixxxer

К.О.
Партнер клуба
не знаю как сделано конкретно в mysql, но я бы использовал коллейшены дающие массив dword-ов (грубо говоря utf 32 с поправками на case sensitivity) при создании индекса, а дальше бы манипулировал dword-ами.

бо переменные длины это жесть)
 

x-yuri

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

-~{}~ 24.12.08 05:49:

а написанные функции для работы с utf-8 наверняка есть
 

yana

Новичок
люди, а вы про меня то не забыли? может ктонить хотя бы даст ссылку, как должна идти кривая зависимости времени от количества элементов?

или может есть где-то реализация этого алгоритма на php
 
Сверху