Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] na co założyć index?
psw779
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.03.2006

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


Mam takie zapytanie:

  1. SELECT
  2.  
  3. pid.date AS galleryDate,
  4. pid.time AS galleryTime,
  5. pid.name AS galleryName,
  6. pid.title AS galleryTitle,
  7.  
  8. p.date AS pictureDate,
  9. p.time AS pictureTime,
  10. p.gallery AS pictureGallery,
  11. p.name AS pictureName,
  12. p.title AS pictureTitle,
  13.  
  14. IFNULL(pid.countv,0) AS countViews,
  15. IFNULL(pid.countp,0) AS countPictures
  16.  
  17. FROM
  18.  
  19. (
  20. SELECT
  21. g.date, g.time, g.name, g.title,
  22.  
  23. MAX(p.id) AS maxid, SUM(countv) AS countv, COUNT(*) AS countp
  24.  
  25. FROM pictures p
  26.  
  27. LEFT JOIN galleries g ON p.idg = g.id
  28.  
  29. GROUP BY p.idg
  30. ORDER BY g.id DESC
  31. ) pid
  32.  
  33. LEFT JOIN pictures p ON pid.maxid = p.id
  34.  
  35. ORDER BY p.id DESC
  36. LIMIT 10


Wykonuje mi się około 0,4s. Na co założyć index aby było szybsze?

Explain:
(IMG:http://img207.imageshack.us/img207/8841/image1mts.th.png)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Index zazwyczaj nakłada się na kolumnę, która jest bardzo często używana, a więc ta, która służy do łączenia z innymi, której używa się w warunku WHERE, GROUP BY lub HAVING czy też ORDER BY.
W tym wypadku najlepiej na p.idg oraz g.id
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 18:42