|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.03.2012, 13:44 | #1 |
Пользователь
Регистрация: 27.12.2011
Сообщений: 86
|
Оптимизация функций.
Добрый день.
Поставлена задача оптимизировать две функции. Поизвращаться над ними уже успел, заработали быстрее но недостаточно быстро, больше не знаю что делать... PHP код:
PHP код:
Мне не важно что в нем после ";". Важно совпадение данных до точки с заяптой с входящей в функцию переменной $name. Как только нашли такое совпадение функция возвращает value и финита. PHP код:
вторая функция, самая дикая PHP код:
Как можно оптимизировать эти две дико жрущие серверные ресурсы вещи? |
05.03.2012, 14:10 | #2 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Это все очень просто решается средствами самой базы данных
1. Неправильное проектирование БД - нужно все ваши model1, model2 ... 4,5 вынести в отдельную таблицу ( TABLE models (product_id, model_name) ) 2. Расставить индексы 3. Простой поиск по моделям с JOIN и like Код:
|
05.03.2012, 14:13 | #3 |
Пользователь
Регистрация: 27.12.2011
Сообщений: 86
|
like - есть плохо.
Если при "=" mysql работает с индексами, то с like скула начинает работать уже со значениями, и врят ли многим отличается от strpos. -- ADD -- С базой я к сожалению ничего не могу сделать, с какой дали работать, с той и приходится. Последний раз редактировалось Dexes; 05.03.2012 в 14:21. |
05.03.2012, 14:48 | #4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,160
|
а может как вариант
Код:
Код:
like - не всегда есть плохо отличаться будет тем что нагрузка будет на БД ... снижая скорость.. во втором случае - нагрузка на PHP код ... то есть память и процессор |
05.03.2012, 14:50 | #5 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,160
|
в вашем случае вытаскивать ВСЮ базу и конопатить её - ужасно!
а если записей тысячи? миллионы? |
05.03.2012, 14:54 | #6 | |
Пользователь
Регистрация: 27.12.2011
Сообщений: 86
|
Здесь не like нужен, а ему обратный)))
не model like %$name% а $name like %model% Если можно так выразиться) Цитата:
про вытаскивание согласен, но и поменять структуру БД не в моей компетенции... Последний раз редактировалось Dexes; 05.03.2012 в 15:04. |
|
05.03.2012, 15:06 | #7 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,160
|
ну поменяй на обратный.... пусть $name like %model%
только тогда второй способ не подойдет точно ) |
05.03.2012, 15:19 | #8 |
Пользователь
Регистрация: 27.12.2011
Сообщений: 86
|
Не знал что так можно... (чего по молодости только не узнаешь)
|
05.03.2012, 15:25 | #9 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
Никогда не понимал логика заказчика, который просит чего-то там наоптимизировать в скриптах, когда БД изначально сделана через одно место и ее трогать почему-то нельзя )
Хотя скрипт конвертации данных из одной таблицы в 3 другие пишется за пару минут. Думаю самый простой способ - убеждать заказчиков в неизбежности нормальной оптимизации начиная с корня проблемы. P.S. Советую для скорости это все выполнять в хранимой процедуре, потому что их вызов хорошо кэшируется |
05.03.2012, 15:37 | #10 |
Пользователь
Регистрация: 27.12.2011
Сообщений: 86
|
Я не общаюсь напрямую с заказчиком. Мне ставят задачу написать/оптимизировать модуль, я делаю) Не более того.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi: аппроксимация функций методом базиса из финитных функций | Denna | Помощь студентам | 1 | 12.03.2012 19:23 |
Численные методы : Оптимизация функций одной переменной | Дырдин | Общие вопросы C/C++ | 1 | 04.04.2011 11:36 |
Оптимизация... | MikeMNN | Общие вопросы C/C++ | 0 | 15.12.2010 17:40 |
Построение графиков функций С++ (методы аппроксимации функций) | amdbodia | Общие вопросы C/C++ | 0 | 24.05.2009 15:28 |
использование функций в качестве параметров других функций | mono | Помощь студентам | 0 | 20.04.2009 18:25 |