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
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.quote:Op dinsdag 29 januari 2008 11:53 schreef Chandler het volgende:
[..]
Dat wist ik ook nietweer 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!
Dat klopt maar als je een tabel meerdere keren koppelt doe je imho iets foutquote: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.
Nee hoor hoeft absoluut nietquote: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.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
Geef eens een voorbeeldquote:
Als jij dat wilt ;)quote:
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 | 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' |
dat kan met flush();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?
Daar sta ik ook van te kijken eigenlijk.... ik maak meestal standaard een alias, eens een benchmarkje maken om te kijken hoeveel het scheeltquote: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.
Laat je de uitkomsten weten?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 resultsquote: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
Ja heel leuk, maar niet echt praktijk gericht volgens mij :)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 :)
1 |
21 velden per rijquote:Op dinsdag 29 januari 2008 19:46 schreef JortK het volgende:
Hoeveel velden bevat die tabel?
Geen hond. 1 query duurt alleen maar 0,0001 seconde, en dan wordt het verschil zo lastig te maken....quote:Op dinsdag 29 januari 2008 19:46 schreef JortK het volgende:
En wie draait in één script 1000 queries
5.2.5.quote:Op dinsdag 29 januari 2008 20:43 schreef Farenji het volgende:
Klinkt als een geheugenlek. Welke php versie gebruik je?
ongetwijfeld, maar dat zijn andere functies voor dit doeleinde ook niet.quote:Op dinsdag 29 januari 2008 21:26 schreef ralfie het volgende:
In principe wel, maar 300 paginas ophalen met curl is misschien niet iets waar het voor gemaakt is...
je kunt wat kloten met memory_get_usage(), misschien geeft het wat aanwijzingen over waar het fout gaat
Post je script eens?quote:Op dinsdag 29 januari 2008 21:42 schreef Janteh het volgende:
[..]
ongetwijfeld, maar dat zijn andere functies voor dit doeleinde ook niet.
Met memory_get_usage() zie ik heel mooi dat na elk rondje er ongeveer 10 kb bijkomt, wat precies de grootte van de pagina is.
1 |
In mn CSS file staatquote:<td width="100%" valign="top" class="body_outer">
<?php if (mosCountModules('banner')) { ?>
<div class="banner_inner"><?php mosLoadModules( 'banner', 1 ); ?></div>
<?php } ?>
<?php if ( $user1 > 0 ) {?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="content_table">
<?php
if ($colspan > 0) {
?>
<tr valign="top">
<?php
if ( $user1 > 0 ) {
?>
<td width="50%">
<div class="user1_inner">
<?php mosLoadModules ( 'user1' ); ?>
</div>
</td>
Hoe kan ik het aanpassen zodat het plaatje gecentreerd staat?quote:#banner_inner {
float: left;
padding: 0px;
height: 70px;
border: 1px solid #FCFCFC;
1 2 3 | sprintf('%01.2f', $variable) ?> |
number_format($getal, 2);quote:Op woensdag 30 januari 2008 11:47 schreef Geqxon het volgende:
Afaik kan dat alleen als string. Mijn tip: Schrijf het als echte integer naar de database, en voeg die 00 (str_pad?) er in de presentatie-laag pas aan toe.
Waar moet ik dat omheen zetten? om mijn hele lus?(Met tabel en alles erbij)quote:Op woensdag 30 januari 2008 13:05 schreef Dreammaster het volgende:
je gooit het met htmlspecialchars(); in de database? dan moet je bij het uitlezen htmlspecialchars_decode(); gebruiken
quote:Op woensdag 30 januari 2008 13:11 schreef Dreammaster het volgende:
in de variabele waar je html in staat... maar ik zie het nut niet echt om iets met htmlspecialchars in de database te zetten om het vervolgens weer de decoden...
1 2 3 4 5 6 7 8 9 | $_POST['name'] = htmlspecialchars($_POST['name']); $_POST['message'] = addslashes($_POST['message']); $_POST['message'] = htmlspecialchars($_POST['message']); if($_POST['name'] && $_POST['message']){ $query = "INSERT INTO reacties(naam, bericht, getID) VALUES ('$_POST[name]', '$_POST[message]', '$_GET[id]')"; mysql_query($query); } |
1 2 3 | $_POST['name'] = mysql_real_escape_string($_POST['name']); ?> |
1 2 3 4 5 6 7 8 9 | $name = $_POST['name']; $message = $_POST['message']; if(is_string($name) && is_string($message) { $query = "INSERT INTO reacties(naam, bericht, getID) VALUES ('" . mysql_real_escape_string($name) . "' , '" . mysql_real_escape_string($message) . "', '$_GET[id]')"; mysql_query($query); } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |