Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> optymalizacja kodu (PHP, MYSQL)
lysyluszowice
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 18.11.2008

Ostrzeżenie: (10%)
X----


Witam,
mam problem z szybkością skryptu.
Otóż przy małej ilości danych skrypt działa świetnie szybko, przy dużych ilościach danych skrypt działa 10 razy wolniej, skrypt napisany jest na smartach.
Oto kawałek kodu:

if (is_numeric ($_SESSION["rodzaj"]))
{
//$miasto = mysql_query ('SELECT asortyment_name'.LANG.' FROM asortyment WHERE asortyment_id '.$_SESSION["rodzaj"].'');
//korekta dla nowych danych
$miasto = mysql_query ('SELECT asortyment_name'.LANG.' FROM asortyment WHERE asortyment_id IN ('.$_SESSION["rodzaj"].')');
$dane = mysql_fetch_array ($miasto);
$rodzaj = $dane["asortyment_name".LANG];
}


case "rodzaj":
case "asortyment":
if (isset ($_GET['b']) && is_numeric ($_GET['b'])) $_SESSION['asortyment_id'] = $_GET['b'];
$sql_mod = 'ogloszenie_rodzaj IN ('.$_SESSION['asortyment_id'].')';

$res = mysql_query ('SELECT asortyment_name'.LANG.' as asortyment_name FROM asortyment WHERE asortyment_id IN ('.$_SESSION['asortyment_id'].')');
$typ_szukania = SPIS_RODZAJ.' - ';
$obiekt_szukania = mysql_result ($res, 0, 0);
break;


Jak można przyspieszyć działanie tych zapytań?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Uzywaj bbcode!!!

Kod co pokazales nic nie mowi, dlaczego mialoby dzialac 10x wolniej. Jest to jakis maly wyciety kawalek. Nie wiadomo czy są tam petle czy inne rzeczy, ktore mogą opóźniać
Go to the top of the page
+Quote Post
kosmowariat
post
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

Ostrzeżenie: (0%)
-----


http://xdebug.org/
Go to the top of the page
+Quote Post
MWL
post
Post #4





Grupa: Zarejestrowani
Postów: 493
Pomógł: 32
Dołączył: 14.04.2008
Skąd: Lenkowski.net

Ostrzeżenie: (0%)
-----


http://phpbench.com/
Go to the top of the page
+Quote Post
ultra_18
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 30.10.2008

Ostrzeżenie: (0%)
-----


nie czaje wcale tych twoich zapytan ;| , one wogle działaja?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? skoro nie używasz znaków ucieczki i cały czas ten sam znak i zaczynasz zapytanie od ' a konczysz na " .


Cytat(lysyluszowice @ 19.11.2008, 10:08:29 ) *
//$miasto = mysql_query ('SELECT asortyment_name'.LANG.' FROM asortyment WHERE asortyment_id '.$_SESSION["rodzaj"].'');


żeby zwrócić wynik zapytania w select to być musiał dopisac jeszcze (np.) $wynik = mysql_fetch_row($miasto); jeżeli oczywiście wogle $miasto dziala w co śmiem wątpić. Jeżeli chodzi o optymalizacje to utworzenie indeksów dla wierszy tabeli zwieksza szybkość operacji na tych tabelach. Indeksy same sie tworzą dla kluczy podstawowych (PRIMARY KEY) a jeżeli nie masz w niektórych kolumnach to sam utwórz takowe dla najcześciej wybieranych rekordów. A co do czasu działaniu skryptu to można to zmierzyć , umieść na samym początku :

$time = microtime();

a na samym koncu

echo 'Czas wykonania skryptu to: '. (microtime()-$time) * 1000000 .' mikrosekund';

1000 mikrosekund to 1 mili sekunda czyli naprawde nie wiele.
Go to the top of the page
+Quote Post
pinochet
post
Post #6





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

Ostrzeżenie: (0%)
-----


Zdarzało mi sie ze w mysql-u był domyslnie ustawiony InnoDb jeżeli nie potrzebujesz zmien na myisam.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.12.2025 - 13:26