abonnement Unibet Coolblue Bitvavo
  dinsdag 29 januari 2008 @ 12:52:40 #1
107951 JortK
Immer kwaliteitsposts
pi_56383354

cd niet bijgeleverd

Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten w�t er niet lukt en w�lke foutmelding je precies krijgt

Vorige delen:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52


Zie ook:
  • PHP Dataverwerking
  • Offici�le PHP website
  • PHP Documentatie
  • MySQL Reference Manual
  • Yet Another PHP Faq
  • PHP Cheat Sheet
  • PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

    Tutorials:
  • W3Schools PHP
  • W3Schools SQL

    Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP
  •   dinsdag 29 januari 2008 @ 12:52:58 #2
    107951 JortK
    Immer kwaliteitsposts
    pi_56383363
    En de laatste post:
    quote:
    Op dinsdag 29 januari 2008 12:51 schreef JortK het volgende:
    Hoeveel trager dan?

    Ik werk op echt grote omgevingen (MSSQL) maar daar merk ik het echt niet

    Wat ik wel merk in performance is of je je joins left in de WHERE of in de FROM
      dinsdag 29 januari 2008 @ 12:56:40 #3
    39436 Dreammaster
    Dat zei je moeder vannacht ook
    pi_56383457
    dat hangt ook af van de hoeveelheid data die in je tabel staat en hoeveel gebruik er van wordt gemaakt.
    vergelijk het maar eens in phpMyAdmin eerst met aliassen en daarna zonder.
    pi_56383518
    tvp again
    pi_56383637
    quote:
    Op dinsdag 29 januari 2008 11:53 schreef Chandler het volgende:

    [..]

    Dat wist ik ook niet weer wat geleerd, vind zo ie zo dat aliassen vies zijn, het is imho duidelijker om gewoon de gehele tabelnaam te gebruiken, weet je gelijk wat waar voor dient!
    Als je een tabel een of meerdere keren met zichzelf joint dan ontkom je natuurlijk niet aan aliassen... dat het performance kost wist ik ook niet eigenlijk.
    pi_56383948
    quote:
    Op dinsdag 29 januari 2008 13:03 schreef Farenji het volgende:

    [..]

    Als je een tabel een of meerdere keren met zichzelf joint dan ontkom je natuurlijk niet aan aliassen... dat het performance kost wist ik ook niet eigenlijk.
    Dat klopt maar als je een tabel meerdere keren koppelt doe je imho iets fout
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
      dinsdag 29 januari 2008 @ 13:23:15 #7
    107951 JortK
    Immer kwaliteitsposts
    pi_56384215
    quote:
    Op dinsdag 29 januari 2008 13:13 schreef Chandler het volgende:

    [..]

    Dat klopt maar als je een tabel meerdere keren koppelt doe je imho iets fout
    Nee hoor hoeft absoluut niet
      dinsdag 29 januari 2008 @ 13:29:53 #8
    39436 Dreammaster
    Dat zei je moeder vannacht ook
    pi_56384402
    quote:
    Op dinsdag 29 januari 2008 13:13 schreef Chandler het volgende:

    [..]

    Dat klopt maar als je een tabel meerdere keren koppelt doe je imho iets fout
    Nee hoor.. in sommige situaties is dat noodzakelijk. Als je met parent_id's werkt bijvoorbeeld.
    pi_56385110
    quote:
    Op dinsdag 29 januari 2008 13:23 schreef JortK het volgende:

    [..]

    Nee hoor hoeft absoluut niet
    Geef eens een voorbeeld
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
      dinsdag 29 januari 2008 @ 14:04:33 #10
    62215 qu63
    ..de tijd drinkt..
    pi_56385302
    quote:
    Op dinsdag 29 januari 2008 12:58 schreef Tarabass het volgende:
    tvp again
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
      dinsdag 29 januari 2008 @ 14:10:05 #11
    107951 JortK
    Immer kwaliteitsposts
    pi_56385441
    quote:
    Op dinsdag 29 januari 2008 13:56 schreef Chandler het volgende:

    [..]

    Geef eens een voorbeeld ;)
    Als jij dat wilt ;)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    SELECT TBL_MPM.MPM_ID,TBL_MPM.ORG_ID,TBL_MPM.MPM_TAB,SUBSTRING(TBL_MPM_009.MPM_TEXT,1,13) AS [TBL_MPM_VELD009],SUBSTRING(TBL_MPM_011.MPM_TEXT,1,192) AS [TBL_MPM_VELD011],SUBSTRING(TBL_MPM_016.MPM_TEXT,1,50) AS [TBL_MPM_VELD016],SUBSTRING(TBL_MPM_019.MPM_TEXT,1,192) AS [TBL_MPM_VELD019],TBL_MPM_022.MPM_TEXT AS [TBL_MPM_VELD022],TBL_MPM_023.MPM_TEXT AS [TBL_MPM_VELD023],TBL_MPM_027.MPM_TEXT AS [TBL_MPM_VELD027],TBL_MPM_028.MPM_TEXT AS [TBL_MPM_VELD028],TBL_MPM_032.MPM_TEXT AS [TBL_MPM_VELD032],TBL_MPM_033.MPM_TEXT AS [TBL_MPM_VELD033],TBL_MPM_038.MPM_TEXT AS [TBL_MPM_VELD038],TBL_MPM_039.MPM_TEXT AS [TBL_MPM_VELD039],TBL_MPM_040.MPM_TEXT AS [TBL_MPM_VELD040],TBL_MPM_041.MPM_TEXT AS [TBL_MPM_VELD041],CAST(CAST(TBL_MPM_037.MPM_DATA AS VARBINARY(8000)) AS VARCHAR(8000)) AS [TBL_MPM_VELD037],LEN(CAST(CAST(TBL_MPM_037.MPM_DATA AS VARBINARY(8000)) AS VARCHAR(8000))) AS [TBL_MPM_VELD037_Warning_Max_Length_8000],TBL_MPM_037.MPM_TEXT AS [TBL_MPM_VELD037_TextSource],TBL_MPM_037.MPM_DATA AS [TBL_MPM_VELD037_ImageSource],CAST(CAST(TBL_MPM_042.MPM_DATA AS VARBINARY(8000)) AS VARCHAR(8000)) AS [TBL_MPM_VELD042],LEN(CAST(CAST(TBL_MPM_042.MPM_DATA AS VARBINARY(8000)) AS VARCHAR(8000))) AS [TBL_MPM_VELD042_Warning_Max_Length_8000],TBL_MPM_042.MPM_TEXT AS [TBL_MPM_VELD042_TextSource],TBL_MPM_042.MPM_DATA AS [TBL_MPM_VELD042_ImageSource],SUBSTRING(TBL_MPM_044.MPM_TEXT,1,10) AS [TBL_MPM_VELD044],SUBSTRING(TBL_MPM_045.MPM_TEXT,1,10) AS [TBL_MPM_VELD045],SUBSTRING(TBL_MPM_046.MPM_TEXT,1,10) AS [TBL_MPM_VELD046],CAST(CAST(TBL_MPM_047.MPM_DATA AS VARBINARY(8000)) AS VARCHAR(8000)) AS [TBL_MPM_VELD047],LEN(CAST(CAST(TBL_MPM_047.MPM_DATA AS VARBINARY(8000)) AS VARCHAR(8000))) AS [TBL_MPM_VELD047_Warning_Max_Length_8000],TBL_MPM_047.MPM_TEXT AS [TBL_MPM_VELD047_TextSource],TBL_MPM_047.MPM_DATA AS [TBL_MPM_VELD047_ImageSource],SUBSTRING(TBL_MPM_048.MPM_TEXT,1,192) AS [TBL_MPM_VELD048]
    FROM TBL_MPM
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_009 ON TBL_MPM_009.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_009.MPM_TAB='A' AND TBL_MPM_009.MPM_FIELD='009'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_011 ON TBL_MPM_011.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_011.MPM_TAB='A' AND TBL_MPM_011.MPM_FIELD='011'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_016 ON TBL_MPM_016.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_016.MPM_TAB='A' AND TBL_MPM_016.MPM_FIELD='016'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_019 ON TBL_MPM_019.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_019.MPM_TAB='A' AND TBL_MPM_019.MPM_FIELD='019'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_022 ON TBL_MPM_022.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_022.MPM_TAB='A' AND TBL_MPM_022.MPM_FIELD='022'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_023 ON TBL_MPM_023.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_023.MPM_TAB='A' AND TBL_MPM_023.MPM_FIELD='023'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_027 ON TBL_MPM_027.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_027.MPM_TAB='A' AND TBL_MPM_027.MPM_FIELD='027'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_028 ON TBL_MPM_028.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_028.MPM_TAB='A' AND TBL_MPM_028.MPM_FIELD='028'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_032 ON TBL_MPM_032.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_032.MPM_TAB='A' AND TBL_MPM_032.MPM_FIELD='032'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_033 ON TBL_MPM_033.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_033.MPM_TAB='A' AND TBL_MPM_033.MPM_FIELD='033'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_038 ON TBL_MPM_038.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_038.MPM_TAB='A' AND TBL_MPM_038.MPM_FIELD='038'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_039 ON TBL_MPM_039.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_039.MPM_TAB='A' AND TBL_MPM_039.MPM_FIELD='039'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_040 ON TBL_MPM_040.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_040.MPM_TAB='A' AND TBL_MPM_040.MPM_FIELD='040'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_041 ON TBL_MPM_041.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_041.MPM_TAB='A' AND TBL_MPM_041.MPM_FIELD='041'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_037 ON TBL_MPM_037.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_037.MPM_TAB='A' AND TBL_MPM_037.MPM_FIELD='037'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_042 ON TBL_MPM_042.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_042.MPM_TAB='A' AND TBL_MPM_042.MPM_FIELD='042'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_044 ON TBL_MPM_044.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_044.MPM_TAB='A' AND TBL_MPM_044.MPM_FIELD='044'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_045 ON TBL_MPM_045.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_045.MPM_TAB='A' AND TBL_MPM_045.MPM_FIELD='045'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_046 ON TBL_MPM_046.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_046.MPM_TAB='A' AND TBL_MPM_046.MPM_FIELD='046'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_047 ON TBL_MPM_047.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_047.MPM_TAB='A' AND TBL_MPM_047.MPM_FIELD='047'
    LEFT OUTER JOIN TBL_MPM AS TBL_MPM_048 ON TBL_MPM_048.MPM_PARENT_ID=TBL_MPM.MPM_ID AND TBL_MPM_048.MPM_TAB='A' AND TBL_MPM_048.MPM_FIELD='048'
    WHERE
    TBL_MPM.MPM_TAB='A' AND TBL_MPM.MPM_FIELD='GRD'


    Wanneer je met parent_id's werkt heb je het wel degelijk nodig ;)
    pi_56385742
    Sjeetje
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
      dinsdag 29 januari 2008 @ 14:53:54 #13
    107951 JortK
    Immer kwaliteitsposts
    pi_56386545
    Ja hoor, helemaal
    The people who lost my respect will never get a capital letter for their name again.
    Like trump...
    pi_56386705
    Bij tree-structuren ontkom je er ook niet aan.
    pi_56387276
    Is het mogelijk om php output te laten sturen terwijl hij nog aan het parsen is? Ik heb een script wat heel lang moet draaien en ik zou graag willen dat ik de voortgang al op mn scherm krijg terwijl hij nog bezig is, of moet ik dan aan de cli gaan denken oid?
      dinsdag 29 januari 2008 @ 15:27:25 #17
    39436 Dreammaster
    Dat zei je moeder vannacht ook
    pi_56387350
    quote:
    Op dinsdag 29 januari 2008 15:25 schreef Janteh het volgende:
    Is het mogelijk om php output te laten sturen terwijl hij nog aan het parsen is? Ik heb een script wat heel lang moet draaien en ik zou graag willen dat ik de voortgang al op mn scherm krijg terwijl hij nog bezig is, of moet ik dan aan de cli gaan denken oid?
    dat kan met flush();
    pi_56388047
    quote:
    Op dinsdag 29 januari 2008 13:03 schreef Farenji het volgende:
    Als je een tabel een of meerdere keren met zichzelf joint dan ontkom je natuurlijk niet aan aliassen... dat het performance kost wist ik ook niet eigenlijk.
    Daar sta ik ook van te kijken eigenlijk.... ik maak meestal standaard een alias, eens een benchmarkje maken om te kijken hoeveel het scheelt
      dinsdag 29 januari 2008 @ 16:21:16 #19
    136730 PiRANiA
    All thinking men are atheists.
    pi_56388571
    quote:
    Op dinsdag 29 januari 2008 15:27 schreef Dreammaster het volgende:

    [..]

    dat kan met flush();
    Die ga ik onthouden
    pi_56389162
    quote:
    Op dinsdag 29 januari 2008 15:56 schreef Xcalibur het volgende:

    [..]

    Daar sta ik ook van te kijken eigenlijk.... ik maak meestal standaard een alias, eens een benchmarkje maken om te kijken hoeveel het scheelt
    Laat je de uitkomsten weten?

    Ik maak eigenlijk ook standaard aliassen (A)
      dinsdag 29 januari 2008 @ 18:41:36 #21
    107951 JortK
    Immer kwaliteitsposts
    pi_56391941
    quote:
    Op dinsdag 29 januari 2008 15:56 schreef Xcalibur het volgende:

    [..]

    Daar sta ik ook van te kijken eigenlijk.... ik maak meestal standaard een alias, eens een benchmarkje maken om te kijken hoeveel het scheelt
    Please post the results
    pi_56393300
    Ik maak eigenlijk nooit benchmarks, dus ik hoop dat ik een beetje iets zinnigs geproduceerd heb

    - Tabel met bijna 3940 records
    - Query 1: SELECT * FROM clients
    - Query 2: SELECT * FROM clients AS clients
    - Loop waarin de query 100x uitgevoerd wordt
    - PHP microtime die de tijd registreert voor en na de loop

    Gemiddelde resultaat over 10 metingen zonder alias: 10,82319 seconden
    Gemiddelde resultaat over 10 metingen met alias: 11,13025 seconden
    Verschil over 1000 queriesl: 2,83% trager met alias

    Dit is natuurlijk een zeer beperkt aantal queries wat ik gedraaid heb, maar ik denk wel dat het redelijk betrouwbaar is... Met alias is iets trager, maar ik denk dat je het op een per-query basis echt niet gaat merken, tenzij je echt veel bezoekers op je site hebt
      dinsdag 29 januari 2008 @ 19:46:54 #23
    107951 JortK
    Immer kwaliteitsposts
    pi_56393441
    quote:
    Op dinsdag 29 januari 2008 19:41 schreef Xcalibur het volgende:
    Ik maak eigenlijk nooit benchmarks, dus ik hoop dat ik een beetje iets zinnigs geproduceerd heb :P

    - Tabel met bijna 3940 records
    - Query 1: SELECT * FROM clients
    - Query 2: SELECT * FROM clients AS clients
    - Loop waarin de query 100x uitgevoerd wordt
    - PHP microtime die de tijd registreert voor en na de loop

    Gemiddelde resultaat over 10 metingen zonder alias: 10,82319 seconden
    Gemiddelde resultaat over 10 metingen met alias: 11,13025 seconden
    Verschil over 1000 queriesl: 2,83% trager met alias

    Dit is natuurlijk een zeer beperkt aantal queries wat ik gedraaid heb, maar ik denk wel dat het redelijk betrouwbaar is... Met alias is iets trager, maar ik denk dat je het op een per-query basis echt niet gaat merken, tenzij je echt veel bezoekers op je site hebt :)
    Ja heel leuk, maar niet echt praktijk gericht volgens mij :)

    Hoeveel velden bevat die tabel?

    Haal eens zoiets op

    1SELECT a.field1, a.field2, a.field3, a.field4 FROM clients a


    Mensen halen nooit een complete tabel op volgens mij :?

    En wie draait in één script 1000 queries :?

    Ik denk dat als je de praktijk zal bekijken dat het verschil te verwaarlozen is :)
    pi_56393560
    quote:
    Op dinsdag 29 januari 2008 19:46 schreef JortK het volgende:
    Hoeveel velden bevat die tabel?
    21 velden per rij
    Waarom zou ik minder velden ophalen, dan wordt het verschil toch alleen maar kleiner?
    quote:
    Op dinsdag 29 januari 2008 19:46 schreef JortK het volgende:
    En wie draait in één script 1000 queries
    Geen hond. 1 query duurt alleen maar 0,0001 seconde, en dan wordt het verschil zo lastig te maken....

    Hoe zou jij het benchmarken dan?
    pi_56393693
    Nu ik veel meer met OOP werk zal mijn totale systeem waarschijnlijk ook 2.83 procent trager worden. Niet interresant, want het programmeert wel stukken beter.
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')