Adamos, еще на основе ответа res2001 крутится какая то оптимизация блоками.
Пока без конкретики, но попробую расписать. Допустим блоки по 5 знаков.
Искомая строка
00100 01111 02023 0000
По блокам записываем количество нулей 4125
И строка в базе пускай
00100 01111 12023 00300
по блокам - 4114
Естественно в базе эти данные заранее просчитаны, а не на этапе поиска.
Мне кажется если сначала сравнить совпадения вот так "по блокам" то можно еще больше заранее отсеять строк. Конечно оставшиеся строки придется "уточнять" полным перебором - но это одно из направлений оптимизации - заранее отсеять часть данных.
Adamos, влияет.
Если в изначальной строке 100 нулей, а в строке из базы - 50 - то как вы ни крутите, а 90% совпадения не получите. Как минимум на взаимном сравнении количества нулей вы можете исключать часть строк из проверок.
Adamos, Надо пробовать. Эта оптимизация делается достаточно быстро. Да, тут кнчн большая зависимость от того что там в данных. Собственно поэтому никогда и нет оптимального алгоритма (дешевого).
Количество нулей в строках предпосчитать мне кажется тоже хорошей идеей.
An hour.