mysql explain auswerten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql explain auswerten

    so,
    um mal wieder das letzte rauszuholen ... eine Frage von mir.

    ich habe hier mal eine Explain Auswertung, und es würde mich mal
    interressieren, wie man ein Abfrage stellen muß, bzw. welche Indizies
    man benötigt, damit man kein "using filesort" oder "using temporary" bekommt?
    Code:
    table	type	possible keys	key			key_len	ref					rows	extra
    
    ft		ref		forum_id		forum_id	4		const				89		where used; Using filesort
    t		eq_ref	PRIMARY			PRIMARY		4		ft.thread_id		1
    u		eq_ref	PRIMARY			PRIMARY		4		t.startuser_id		1
    u2		eq_ref	PRIMARY			PRIMARY		4		t.lastuser_id		1
    s		eq_ref	PRIMARY			PRIMARY		4		t.smilie_id			1
    un		eq_ref	PRIMARY			PRIMARY		8		t.thread_id,const	1		Using index
    p		eq_ref	PRIMARY			PRIMARY		8		const,t.thread_id	1		Using index
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    wie sieht denn das select aus?

    ein temporary solltest du nur bekommen, wenn du GROUP BY a und ORDER BY b machst
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Das "using filesort" bekomme ich öfters mal bei einem ORDER, nicht immer.
      Das "using temporary" gibs meistens bei GROUP BY.

      Die Frage ist da eigentlich, warum er das dann macht, da nicht bei allen
      Abfragen dieser Hinweis kommt. Ich finde irgendwie keinen signifikanten
      Unterschied, um sowas zu verhindern.

      ein "using filesort" gibs zB hier
      PHP-Code:
      'SELECT
          ft.post_id x,
          t.thread_id,
          t.forum_id,
          t.startuser_id,
          t.starttopic,
          u.nick startuser_nick,
          DATE_FORMAT(t.starttime,\''
      .$this->user->get('format_date').'<br>'.$this->user->get('format_time').'\') start_time,
          t.hits,
          t.answers,
          t.lastpost_id,
          DATE_FORMAT(t.lasttime,\''
      .$this->user->get('format_date').'<br>'.$this->user->get('format_time').'\') last_time,
          u2.nick lastuser_nick,
          t.lastuser_id,
          s.file,
          un.user_id    unreaded,
          p.user_id    posted,
          IF(t.forum_id=0,t.starttime,t.lasttime) sort
      FROM pxp_'
      ._DB_NUMBER_.'_forum_threads ft
      LEFT JOIN pxp_'
      ._DB_NUMBER_.'_threads t
          ON ( ft.thread_id = t.thread_id )
      LEFT JOIN pxp_'
      ._DB_NUMBER_.'_user u
          ON ( t.startuser_id = u.user_id )
      LEFT JOIN pxp_'
      ._DB_NUMBER_.'_user u2
          ON ( t.lastuser_id = u2.user_id )
      LEFT JOIN pxp_'
      ._DB_NUMBER_.'_smilies s
          ON ( t.smilie_id = s.smilie_id )
      LEFT JOIN pxp_'
      ._DB_NUMBER_.'_unreaded un
          ON ( t.thread_id = un.thread_id AND un.user_id = '
      .$this->user->get('user_id').' )
      LEFT JOIN pxp_'
      ._DB_NUMBER_.'_posted p
          ON ( t.thread_id = p.thread_id AND p.user_id = '
      .$this->user->get('user_id').' )
      WHERE ft.forum_id = '
      .$this->forumid.'
      ORDER BY ft.post_id DESC
      LIMIT '
      .$_start.','.$per_page 
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar

      Lädt...
      X