Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Proste zapytanie SQL a długo trwa.
pogdan
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 21.10.2007

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


Dlaczego poniższe zapytanie idzie w minuty tzn trwa do kilku minut w tabeli tr_wydanie jest 800 recordów.
Jest index na id, i na kontrahent_id wg mnie i bez tych indexów powinno chodzić szybko.

  1. SELECT w.id AS w_id
  2. FROM tr_wydanie w WHERE w.id IN (
  3. SELECT max(w2.id)
  4. FROM tr_wydanie w2
  5. WHERE w2.wydanie>0 AND w2.id IN (
  6. SELECT max(id)
  7. FROM tr_wydanie
  8. WHERE wydanie > 0 GROUP BY kontrahent_id
  9. )
  10. GROUP BY w2.kontrahent_id
  11. )


tabela wygląda tak
  1. | id | int(11)
  2. | kontrahent_id | int(11)
  3. | name | varchar(255)
  4. | text | text
  5. | created_on | timestamp
  6. | wplata | double
  7. | action | varchar(64)
  8. | kiedy | datetime
  9.  



Po początkowym wgraniu dumpa chodzi te zapytanie bardzo szybko. Po jakimś czasie trwa kilka minut i już tak zawsze jest. Silnik MyISAM.

Ten post edytował pogdan 8.10.2013, 15:16:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pogdan
post
Post #2





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 21.10.2007

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


  1. +----+--------------------+------------+-------+---------------+-----------------------+---------+------+------+-----------------------------+
  2. | id | select_type | TABLE | type | possible_keys | KEY | key_len | ref | rows | Extra |
  3. +----+--------------------+------------+-------+---------------+-----------------------+---------+------+------+-----------------------------+
  4. | 1 | PRIMARY | w | INDEX | NULL | PRIMARY | 4 | NULL | 804 | USING WHERE; USING INDEX |
  5. | 2 | DEPENDENT SUBQUERY | w2 | INDEX | NULL | wydanie_kontrahent_id | 4 | NULL | 9 | USING WHERE; USING filesort |
  6. | 3 | DEPENDENT SUBQUERY | tr_wydanie | INDEX | NULL | wydanie_kontrahent_id | 4 | NULL | 9 | USING WHERE; USING filesort |
  7. +----+--------------------+------------+-------+---------------+-----------------------+---------+------+------+-----------------------------+
  8. 3 rows IN SET (0.00 sec)


ten index to dodatkowo? czy index wydanie_kontrahent_id usunąć

Ten post edytował pogdan 8.10.2013, 15:49:55
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: 16.10.2025 - 22:27