![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 18.11.2008 Ostrzeżenie: (10%)
|
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ń? |
|
|
|
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ć |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 17 Dołączył: 18.07.2007 Skąd: Białystok Ostrzeżenie: (0%)
|
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 32 Dołączył: 14.04.2008 Skąd: Lenkowski.net Ostrzeżenie: (0%)
|
|
|
|
|
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 " .
//$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. |
|
|
|
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.
|
|
|
|
![]() ![]() |
|
Aktualny czas: 19.12.2025 - 13:26 |