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 | SELECT floco_flight_id, (int) airplane, (varchar) firstpilot_feu_id, (int) secondpilot_feu_id, (int) starttime, (datetime) landingtime, (datetime) startmethod, (varchar) flighttype, (varchar) club, (boolean) own, (boolean) flighttime, (time) DATE(starttime) AS datum, feu1.data AS firstpilot_name, feu2.data AS secondpilot_name FROM flightdb_flights LEFT JOIN feusers_properties AS feu1 ON (firstpilot_feu_id = feu1.userid) AND (feu1.title = 'realname') LEFT JOIN feusers_properties AS feu2 ON (secondpilot_feu_id = feu2.userid) AND (feu2.title = 'realname') WHERE (YEAR(starttime) = '2011' AND airplane IN ('PH454','PH974','PH1006','PH1210','PH1382','PH1417','PH1433') AND flighttime > '01:05:00') ORDER BY flighttime desc LIMIT 0,10 |
1 2 3 4 5 | userid | title | data 1 | name | piet 2 | name | jan 1 | adres | hoofdstraat 21 3 | name | henk |
1 2 3 | WHERE (YEAR(starttime) = '2011' AND (firstpilot_feu_id = '2' OR secondpilot_feu_id = '2')) ORDER BY starttime |
1 2 | WHERE (DATE(starttime) = '2011-10-30') ORDER BY starttime |
Dat is juist wat ik gedaan heb. Flighttime is nu een eigen kolom met index, terwijl deze eerst met TIMEDIFF on the fly berekend werd. Het verschil in prestaties is alleen marginaal.quote:Op maandag 14 november 2011 11:56 schreef Catbert het volgende:
Je berekent on the fly (huhu) waarden waarop je ordent, dat betekent min of meer dat er een volledige tijdelijke tabel opgebouwd moet worden (zou je waarschijnlijk ook zien in een query explain). Oftewel; bereken die flight-time voor en zet er een index op.
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 26 27 28 29 30 31 | pear_ResultSet Object ( [emptyTimeStamp] => [emptyDate] => [datetime] => [connectionId] => Resource id #25 [fields] => Array ( [id] => 1 [select_type] => SIMPLE [table] => flightdb_flights [type] => range [possible_keys] => flighttime,airplane [key] => flighttime [key_len] => 4 [ref] => [rows] => 466 [Extra] => Using where; Using temporary; Using filesort ) [resultId] => Resource id #248 [_currentRow] => 0 [_numOfRows] => 3 [_numOfFields] => 10 [fetchMode] => 1 [EOF] => [record] => Array ( ) ) |
Dat leek mij ook, daarom is het ook irritant dat het zo traag gaat.quote:Sowieso is een query op 10k records complete peanuts.
Nou waarom het zo traag gaat is wel duidelijk. De vraag is waarom hij voor dat execution plan kiest...quote:Op maandag 14 november 2011 12:20 schreef KomtTijd... het volgende:
Dat leek mij ook, daarom is het ook irritant dat het zo traag gaat.
de explain is van de query exact zoals ik hierboven gepost heb (dus niet die twee varianten). Mooier weergeven zou kunnen maar ik wist/weet amper waar ik naar zit te kijken. Heb exlpain nog niet eerder gebruikt.quote:Op maandag 14 november 2011 12:52 schreef GlowMouse het volgende:
Waar is die explain van en kan je dat niet mooier weergeven?
>> De tabel flightdb_flights laat zich raden.
niet waar, bovendien zijn er meer tabellen
1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 floco_flight_id bigint(19) 2 airplane varchar(80) 3 firstpilot_id int(11) 4 secondpilot_id int(11) 5 starttime datetime 6 landingtime datetime 7 startmethod varchar(20) 8 flighttype varchar(20) 9 club tinyint(1) 10 own tinyint(1) 11 firstpilot_feu_id int(11) 12 secondpilot_feu_id int(11) 13 flighttime time |
1 2 3 4 | 1 id int(11) 2 userid int(11) 3 title varchar(100) 4 data longtext |
Niet bepaald, denk dat je dan nog 90% over hebt.quote:>> AND airplane IN ('PH454','PH974','PH1006','PH1210','PH1382','PH1417','PH1433')
hoe selectief is dat?
Je hebt het hier dus over "using temporary", neem ik aan?quote:Op maandag 14 november 2011 13:01 schreef Catbert het volgende:
[..]
Nou waarom het zo traag gaat is wel duidelijk. De vraag is waarom hij voor dat execution plan kiest...
Using temporary en using filesort zijn beiden indicaties dat MySQL het niet op de indexen op heeft kunnen lossen en zijn flinke performance hits.quote:Op maandag 14 november 2011 13:28 schreef KomtTijd... het volgende:
Je hebt het hier dus over "using temporary", neem ik aan?
Dan weet ik dat ik dat voortaan in de gaten moet houden.
Je kunt ook gewoon bij het inloggen controleren of de opgegeven username en het wachtwoord overeen komen met een match in de database en met elkaar. Dan hoef je helemaal geen cookies te gebruiken. Weet overigens niet of dit beter is hoor.quote:Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.
De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.
voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar
nadelen:
- cookies?
MD5 is imo een beetje verouderd, simpele wachtwoorden zijn eenvoudig te achterhalen. Ik zou bijvoorbeeld SHA gebruiken.quote:Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.
De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.
voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar
nadelen:
- cookies?
Vanuit welke user stuur je hem handmatig aan en vanuit welke user via de scheduled task?quote:Op dinsdag 15 november 2011 09:05 schreef Darkomen het volgende:
Ik snap er echt geen donder van.
ik heb een script dat werk verdeeld, dit script include een rapportage script.
Wanneer het werk script word gedraaid schrijft het rapportage script netjes alle informatie weg in een log directory en zend een mail.
Savonds word ditzelfde script gestart door een scheduled task op een windows 2008 server....
Maar daar gaat het fout, deze geeft aan dat hij gedraaid heeft maar mn logs worden niet weggeschreven.
Start ik de task met de hand dan word alles netjes weggeschreven
Nu heb ik een kopie van de task gemaakt en een kopie van het rapportage script.
Enkel de log directory heb ik veranderd, deze zend netjes de mail uit en schrijft de logs weg?
Enige wat ik nog niet geprobeerd heb ik dezelfde logdir aanhouden, maar dat zou niet uit moeten maken aangezien sochtends alles wel word weg geschreven.
Ander leuk feit toen dit nog op een unix machine draaide was er geen enkel probleem.
Rechtenprobleem op de map ivm taak scheduler en account waaronder deze draait.quote:Op dinsdag 15 november 2011 09:05 schreef Darkomen het volgende:
Ik snap er echt geen donder van.
ik heb een script dat werk verdeeld, dit script include een rapportage script.
Wanneer het werk script word gedraaid schrijft het rapportage script netjes alle informatie weg in een log directory en zend een mail.
Savonds word ditzelfde script gestart door een scheduled task op een windows 2008 server....
Maar daar gaat het fout, deze geeft aan dat hij gedraaid heeft maar mn logs worden niet weggeschreven.
Start ik de task met de hand dan word alles netjes weggeschreven
Nu heb ik een kopie van de task gemaakt en een kopie van het rapportage script.
Enkel de log directory heb ik veranderd, deze zend netjes de mail uit en schrijft de logs weg?
Enige wat ik nog niet geprobeerd heb ik dezelfde logdir aanhouden, maar dat zou niet uit moeten maken aangezien sochtends alles wel word weg geschreven.
Ander leuk feit toen dit nog op een unix machine draaide was er geen enkel probleem.
Je zet ten eerste nooit een PW uberhaupt in een cookie. Je onthoudt de sessie. Daarnaast is MD5 achterhaald. Tenslotte zie ik nergens salts genoemd en ik hoop niet dat je overweegt MD5 passwords unsalted in je DB op te slaan?quote:Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.
De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.
voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar
nadelen:
- cookies?
dat doe ik ook wel, had alleen geen idee hoe ik een sessie aan kon makenquote:Op dinsdag 15 november 2011 09:25 schreef boem-dikkie het volgende:
[..]
Je kunt ook gewoon bij het inloggen controleren of de opgegeven username en het wachtwoord overeen komen met een match in de database en met elkaar. Dan hoef je helemaal geen cookies te gebruiken. Weet overigens niet of dit beter is hoor.
1 | /bin/sh: /home/frietkot/domains/naam.nl/public_html/includes/cronjobs/cronjob_aanmaningen.php: Permission denied |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |