Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wydajność zapytania SELECT (...) WHERE
Forum PHP.pl > Forum > Bazy danych > MySQL
messmaker
  1. $list="";
  2. $query = doquery("SELECT * FROM log ORDER BY id DESC LIMIT 10");
  3. while ($log = mysql_fetch_array($query)) {
  4. $list.="&bull; ".$log["name"]."<br>";
  5. }

Czas wykonania: 0.011s

  1. $list="";
  2. $name="test";
  3. $query = doquery("SELECT * FROM log WHERE username='".$name."' ORDER BY id DESC LIMIT 10");
  4. while ($log = mysql_fetch_array($query)) {
  5. $list.="&bull; ".$log["name"]."<br>";
  6. }

Czas wykonania: 0.214s

W tabeli jest nieco ponad 30000 rekordów, po jej wyczyszczeniu znowu czas wykonania spada, ale czy da się to inaczej rozwiązać? 0.2s to porażająco długo a serwer do najwolniejszych nie należy.
ayeo
Witam!

Nie wiem jak wygląda Twoja tabela, ale index na kolumnie NAME pewnie pomoże winksmiley.jpg

Pozdrawiam!
messmaker
Wykonano w 0.039

Mistrzostwo świata - rozwiązanie genialne w swojej prostocie - dzięki!
Crozin
Jeszcze jedno. Czy mi się wydaje czy każdorazowo podajesz nazwę użytkownika? Coś w stylu:
Kod
ID USERNAME  BLAH
12 Crozin    ...
13 MessMaker ...
16 Crozin    ...
Jeżeli tak, to nazwę użytkownika zastąp jego ID - wyszukiowanie po liczbach jest szybsze od wyszukiwania po tekscie.
Mchl
A indeks
Kod
ALTER TABLE `log` ADD INDEX `username_id`(`username`, `id`);

być może byłby jeszcze lepszy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.