За последние 24 часа нас посетили 20302 программиста и 1711 роботов. Сейчас ищут 1899 программистов ...

Увеличение производительности кода.

Тема в разделе "Вопросы от блондинок", создана пользователем Keo, 8 май 2008.

  1. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    Есть такой код. Он заменяет пробелы в полях таблицы. Строк которых нужно обработать около миллиона. Соответственно происходит это действо очень долго. Как можно оптимизировать данный код? Поля в таблице текстовые.

    PHP:
    1. <?php
    2.     require_once ("connect_db.php");
    3.     $data = "SELECT kad_number FROM rezultat";
    4.     $query = mysql_query($data);
    5.     while ($column = mysql_fetch_row($query))  
    6.             {
    7.                 foreach ($column as $r)
    8.                 {
    9.                 $select1 = "SELECT S_ZU, UPKS_ZU, KS_ZU FROM rezultat WHERE kad_number='$r'";
    10.                
    11.                 $select11 = mysql_fetch_array(mysql_query($select1));
    12.  
    13.                         $S_ZU = str_replace(' ', '', $select11[S_ZU]);
    14.                 $UPKS_ZU = str_replace(' ', '', $select11[UPKS_ZU]);
    15.                 $KS_ZU = str_replace(' ', '', $select11[KS_ZU]);
    16.  
    17.                 $update = "UPDATE rezultat SET S_ZU='$S_ZU' ,UPKS_ZU= '$UPKS_ZU',
    18.                         KS_ZU= '$KS_ZU' WHERE kad_number='$r'";    
    19.                 mysql_query($update);
    20.                  }
    21.             }
    22. echo "Все!";
    23. ?>
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Один UPDATE. Без цикла.
     
  3. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Keo
    Код (Text):
    1. UPDATE rezultat SET
    2.   S_ZU=REPLACE(S_ZU,' ',''),
    3.   UPKS_ZU=REPLACE(UPKS_ZU,' ',''),
    4.   KS_ZU=REPLACE(KS_ZU,' ','');
    Учите матчасть. ;)
     
  4. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    заработался.... горе от ума ((
    спасибо большое!
     
  5. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    эээ а еще в продолжение

    а можно ли с помощью запроса допустим преобразовать '00 00 121212:1564' в '00 00 12:12:12:1564' ? или тут уже без парсинга в пхп не обойтись? У меня конечно есть задумка что можно использовать в mysql функции LEFT и RIGHT но я не знаю как можно объединить строку....

    То есть как сделать что то типа такого UPDATE rezultat SET kad_number= LEFT (kad_number,8)+":"+RIGHT (kad_number,7) WHERE count='1'
     
  6. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Keo
    LENGTH(str) - длина строки
    SUBSTRING(str,pos,len) - вырезание части строки
    CONCAT(str1,str2,...) - склеивание строк
     
  7. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    Пиши в базу данных уже как тебе надо, не придется потом с выводом парится
     
  8. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    Да дело в том что база была уже(