Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Задача:
Есть поле в таблице значения в которой записаны в каком-то отформатированном виде, например:
"123-GKU 890"
"78.23.356"
Нужно чтобы в не зависимости от того как будут введен необходимый код, строки находились, например:
"123 GKU-890" и "1.2.3 G-K.U/890" и т.п. должны выводить на искомый "123-GKU 890".
Я придумал два способа решения проблемы:
1. Добавить в таблицу столбик в котором код будет записан без всех пробелов, тире, точек и т.д.. И в запросе также убирать все эти символы - соответственно поля будут находиться. Но как-то это не изящно, и страшно представить сколько времени займет обновление таблицы в которой десяток миллионов записей.
2. Использовать функцию REPLACE. Но это очень увеличивает время выполнения запроса, так что точно не катит.
Господа, может существует красивый способ решения данной проблемы?
Спасибо.
Неактивен
Голосую за первый способ. Потери при добавлении (обновлении) записей незначител'ны, зато производител'ност' по сравнению со 2. вариантом при поиске колосал'ная.
другие методы в голову не приходят
Неактивен
+1 за первый способ. Тут хочется, чтобы можно было делать индекс над функцией
от поля, но, увы, так нельзя.
Неактивен
Как посоветуете добавить этот столбец - написав php скрипт или прямо в БД цикл организовать?
Неактивен
Добавить столбец, добавить триггеры для добавления и обновления,
обновить один раз руками.
Неактивен
Ок, спасибо.
Неактивен
Страниц: 1