Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2012, 16:54   #11
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Цитата:
Сообщение от Dexes Посмотреть сообщение
Не знал что так можно... (чего по молодости только не узнаешь)
туплю чето .. .низя так
сначала имя поле - потом содержит - потом фрагмент....
а тебе наоборот надо? в фрагменте содержится значение из поля?
тогда
типа так
Код:
select product_id, model, model2, model3, model4, model5, $name AS pole, product where category_id ... pole like %model%
как то так можно попробовать ... не уверен
ADSoft вне форума Ответить с цитированием
Старый 06.03.2012, 10:17   #12
Dexes
Пользователь
 
Регистрация: 27.12.2011
Сообщений: 86
По умолчанию

Решил проблему, засунул всё нужное из базы в массивы в начале обработки (страшно было, но сработало, 6,7мб в среднем в оперативе массив висит =( зато работает быстрее)

Код:
    $sql = 'SELECT action, sale, product_id, category_id, model, model2, model3, model4, model5 FROM product';
    $query = mysql_query ($sql, $link) or sql_error ($sql, $link, __FILE__, __LINE__);
    while ($row = mysql_fetch_assoc($query)) {
        $product_array[$row['category_id']] [$row['product_id']] [1] = $row['model'];
        $product_array[$row['category_id']] [$row['product_id']] [2] = $row['model2'];
        $product_array[$row['category_id']] [$row['product_id']] [3] = $row['model3'];
        $product_array[$row['category_id']] [$row['product_id']] [4] = $row['model4'];
        $product_array[$row['category_id']] [$row['product_id']] [5] = $row['model5'];
        $product_array[$row['category_id']] [$row['product_id']] [6] = $row['action'];
        $product_array[$row['category_id']] [$row['product_id']] [7] = $row['sale'];
    }
Код:
        $row = array('product_id' => 0);
        
        foreach ($product_array as $keyA => $valueA) {
            if ($keyA != $category_id) {
                continue;
            }
            foreach ($product_array[$keyA] as $keyB => $valueB) {
                for ($i = 1; $i < 6; $i++) {
                    if ($product_array[$keyA][$keyB][$i] == '') {
                        continue;
                    }
                    $pos = strpos($name, $product_array[$keyA][$keyB][$i]);
                    if ($pos !== false) {
                        $row = array('category_id' => $keyA, 'product_id' => $keyB, 
                                        'sale' => $product_array[$keyA][$keyB][7], 'action' => $product_array[$keyA][$keyB][6]);
                        return $row; 
                    }
                }
            }
        }
		return $row;
Работать начало в 4 (!) раза быстрее, коллосальный результат =)
По поводу Like синтаксис воспринимает верно так:
Код:
$sq = '...where '.$большая_переменная_в_которой_ищем_вхождение_значения_в_базе.' like ("%"+<имя_поля_в_базе>+"%")';
Воспринимать - воспринимает, но ничего не возвращает. Будет время - разберусь.
P.S. работа через memory table
Код:
    $sql = "CREATE TABLE product_test ENGINE=MEMORY SELECT product_id, category_id, model, model2, model3, model4, model5 FROM product";
    $query = mysql_query ($sql, $link) or sql_error ($sql, $link, __FILE__, __LINE__);
    
    $sql = "alter table product_test add PRIMARY KEY (product_id), add KEY category_id (category_id), add KEY model (model), add KEY model2 (model2),  add KEY model3 (model3), add KEY model4 (model4), add KEY model5 (model5)";
    $query = mysql_query ($sql, $link) or sql_error ($sql, $link, __FILE__, __LINE__);
Ускорила обработку на 4 секунды, с 26ти до 21ой
Dexes вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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