php/SQL wat is sneller: count in JOIN of nieuwe query?

Pagina: 1
Acties:
  • 44 views sinds 30-01-2008

  • decramy
  • Registratie: December 2001
  • Laatst online: 07:51

decramy

root@birdie:~#

Topicstarter
wat is er sneller?
PHP:
1
$r = mysql_query("SELECT tabel1.text, COUNT tabel2.text AS aantal FROM tabel1 INNER JOIN tabel2 ON tabel1.id = tabel2.text_id");

of
PHP:
1
2
3
4
5
$r = mysql_query("SELECT * FROM tabel1");
while($a = mysql_fetch_array($r)){
  $r2 = mysql_query("SELECT id FROM tabel2 where text_id=".$a[id]);
  $aantal = mysql_num_rows($r2);
}

20*375Wp met Enphase IQ7+ micro's | Stiebel Eltron HGE Water/Water WP 9kW | Tesla M3, powered by SmartEVSE | Servertje @ www.coloclue.net


Verwijderd

Waarom test je het niet even?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
De eerste query gaat het snelst zijn, wat best logisch is.
Je laat je DB het werk uitvoeren, en je krijgt in 1x de resultaten.

Bij de 2de optie ga je een select doen over je hele tabel, en ga je dan rij per rij gaan tellen, wat behoorlijk inefficient is.

https://fgheysels.github.io/


Verwijderd

Geen echte SCOUT dus ;)

Verwijderd

misschien is dit nog wel sneller :p

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
$r = mysql_query("SELECT
                       tabel1.text, COUNT(tabel2.text) AS aantal 
                  FROM
                       tabel1, tabel2
                  WHERE
                       tabel1.id = tabel2.text_id
                  GROUP BY
                       tabel2.text_id
                 ");
?>


maar dat moet je zelf maar ff testen

[ Voor 50% gewijzigd door Verwijderd op 26-12-2004 16:18 ]


  • foske
  • Registratie: Juli 2001
  • Laatst online: 18-05 22:42
Mocht je het verschil nu nog niet zien, omdat dit te klein is, moet je er gewoon een heleboel nep data ingooien. (een while lus met inserts maken die random data genereerd).

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:45

gorgi_19

Kruimeltjes zijn weer op :9

Zie whoami; voor dit soort vragen hebben ze profilers uitgevonden :) Een beetje testen c.q. profilen had je ook zelf kunnen doen :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.