abonnement Unibet Coolblue
  dinsdag 15 februari 2011 @ 13:36:12 #1
75592 GlowMouse
l'état, c'est moi
pi_92816501

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:
Via de zoekfunctie

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
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92816616
Top GlowMouse! ik ben weer van de partij! :)

@GlowMouse; het inserten van 1.500.000 records in je tabellen (tags/tag_links) kosten aardig wat tijd, is dat normaal?
Just say hi!
  dinsdag 15 februari 2011 @ 13:40:22 #3
75592 GlowMouse
l'état, c'est moi
pi_92816666
Meer dan een uurtje mag het niet kosten. Indices tijdelijk uitzetten (niet verwijderen) helpt, storage engine tweaken soms ook.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 15 februari 2011 @ 13:40:55 #4
305897 remi1986
This MF is infected by madness
pi_92816684
Lang leve bigdump ^O^
pi_92818192
@GlowMouse, lol het duurt zekers 8 uur maar dat is dan ook incl indices, bestanden en andere tabellen vullen...

heb zelf totaal geen ervaring met de engine te tweaken dus moet ik gewoon maar even rustig afwachten (tis een slome asus laptop :P)

@remi1986; dat is nu geen optie aangezien ik werk met on duplicate key en ruim 250K aan bestanden :@ maar zet nu wel de queries in een extern bestand zo dat ik als er iets fout is gegaan ik alles zo terug kan zetten zonder weer alle bestanden langs te lopen
Just say hi!
pi_92855657
Pff mijn import is voltooid en heb nu de volgende query; die er volgens mij nog steeds lang over doet.

1
2
3
4
5
6
7
8
9
10
SELECT `pix`.*,
`pix_tags`.`tag`
FROM `pix_tags`
LEFT JOIN `pix_tags_links`
ON `pix_tags_links`.`tag_id` = `pix_tags`.`tag_id`
LEFT JOIN `pix`
ON `pix`.`pix_id` = `pix_tags_links`.`pix_id`
WHERE `pix_tags`.`tag` LIKE '%cool%'  
AND `pix`.`adult` = 'n'
LIMIT 0,20

deze duurt wel 0.3 seconden voor maar 241K tags / 1.500k aan tag_links

Kan ik deze nog verder optimaliseren?
Just say hi!
  woensdag 16 februari 2011 @ 09:12:25 #7
305897 remi1986
This MF is infected by madness
pi_92855952
quote:
1s.gif Op woensdag 16 februari 2011 08:57 schreef Chandler het volgende:
Pff mijn import is voltooid en heb nu de volgende query; die er volgens mij nog steeds lang over doet.

[ code verwijderd ]

deze duurt wel 0.3 seconden voor maar 241K tags / 1.500k aan tag_links

Kan ik deze nog verder optimaliseren?
Je doet
1SELECT `pix`.*,

Wat alle kolommen selecteert. Heb je ze allemaal nodig? Misschien kan je alleen de kolommen selecteren die je echt nodig hebt. Volgens mij scheelt dat toch weer iets.
pi_92856090
klopt er zouden een paar kolommen af kunnen maar zou niet weten of dat echt wel een besparing oplevert (extreme besparing)... maar zal het proberen!

-edit-
geprobeerd totaal geen extra preformance winst :{
Just say hi!
  woensdag 16 februari 2011 @ 09:31:23 #9
305897 remi1986
This MF is infected by madness
pi_92856328
quote:
1s.gif Op woensdag 16 februari 2011 09:19 schreef Chandler het volgende:
klopt er zouden een paar kolommen af kunnen maar zou niet weten of dat echt wel een besparing oplevert (extreme besparing)... maar zal het proberen!

-edit-
geprobeerd totaal geen extra preformance winst :{
Oke, naja viel te proberen. Je query is eigenlijk ook helemaal niet zo lang en haalt maar 20 records op.

Vond op http://www.debianadmin.com/top-84-mysql-performance-tips.html nog een lijst met performance tips. Misschien staat er nog wat tussen. Ik weet niet in hoeverre die lijst goed is. Just trying to help :@
pi_92856405
Alle hulp is welkom! en zo leren we allerbeide weer wat meer :) ik ga het eens doornemen! :)
Just say hi!
pi_92857244
quote:
1s.gif Op woensdag 16 februari 2011 08:57 schreef Chandler het volgende:
Pff mijn import is voltooid en heb nu de volgende query; die er volgens mij nog steeds lang over doet.

[ code verwijderd ]

deze duurt wel 0.3 seconden voor maar 241K tags / 1.500k aan tag_links

Kan ik deze nog verder optimaliseren?
Met goedgeplaatste indices moet je een eind kunnen komen, volgens mij :)
  woensdag 16 februari 2011 @ 10:33:33 #12
75592 GlowMouse
l'état, c'est moi
pi_92857889
quote:
WHERE `pix_tags`.`tag` LIKE '%cool%'
:?

http://gathering.tweakers.net/forum/list_messages/1429432
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92858216
Oh, dat had ik nog niet eens gezien, maar dat is helemaal niet te indexeren. Dus met een goede index kun je ook niets oplossen, simpelweg omdat een goede index niet mogelijk is.

Chandler, LIKE %cool% komt op hetzelfde neer als de Dikke Van Dale pakken en alle woorden waar een Q in staat opzoeken. Dat moet je niet willen.
  woensdag 16 februari 2011 @ 14:49:27 #14
334357 Emery
Heavy Metal King!
pi_92866884
Weet iemand wat hier fout gaat?

1
2
3
<?php
$query 
"SELECT agenda_id, agendatitel, agendaplaats, from_unixtime(agendadatum, '%d-%m-%Y') AS datum, agendabeschrijving FROM agenda WHERE agendadatum >= NOW() ORDER BY agenda_id ASC";
?>

Ik wil dat hij alle data van vandaag en ná vandaag laat zien. Data van voor vandaag dus niet. Hij geeft nu gewoon 0 resultaat.

Als ik inplaats van NOW(), $vandaag = date("d-m-Y"); gebruik en $vandaag achter WHERE invul laat hij álle resultaten zien inplaats van alleen de >=.

Ben ongetwijfeld dom bezig, maar goed, kom er niet uit.
"My name is Emery and primarily I make noises - and ideas".
  woensdag 16 februari 2011 @ 14:51:29 #15
305897 remi1986
This MF is infected by madness
pi_92866968
Werken datum velden in MySQL niet in Y-m-d formaat?
  woensdag 16 februari 2011 @ 14:52:32 #16
334357 Emery
Heavy Metal King!
pi_92867026
quote:
1s.gif Op woensdag 16 februari 2011 14:51 schreef remi1986 het volgende:
Werken datum velden in MySQL niet in Y-m-d formaat?
Hij zet de datum als unix_timestamp in een varchar veld.
"My name is Emery and primarily I make noises - and ideas".
  woensdag 16 februari 2011 @ 14:53:18 #17
305897 remi1986
This MF is infected by madness
pi_92867064
dan moet je

1
2
3
<?php
strtotime
(date("Y-m-d"));
?>

gebruiken denk ik aangezien het anders geen timestamp is
  woensdag 16 februari 2011 @ 14:55:31 #18
75592 GlowMouse
l'état, c'est moi
pi_92867153
mktime
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 16 februari 2011 @ 14:58:02 #19
305897 remi1986
This MF is infected by madness
pi_92867267
Overigs doe je

1from_unixtime(agendadatum, '%d-%m-%Y') AS datum

en

1WHERE agendadatum >= NOW()

moet dat dan niet datum zijn i.p.v. agendadatum?
  woensdag 16 februari 2011 @ 14:58:52 #20
334357 Emery
Heavy Metal King!
pi_92867306
quote:
1s.gif Op woensdag 16 februari 2011 14:58 schreef remi1986 het volgende:
Overigs doe je

[ code verwijderd ]

en

[ code verwijderd ]

moet dat dan niet datum zijn i.p.v. agendadatum?
Nee, want als je daar agendadatum van maakt gaat hij vervolgens WHERE doen op de unixtimestamp die al is omgezet volgens mij.
"My name is Emery and primarily I make noises - and ideas".
  woensdag 16 februari 2011 @ 15:13:57 #21
305897 remi1986
This MF is infected by madness
pi_92867953
Klopt idd. Maar dan kan je toch gewoon een timestamp maken met strtotime of mktime en dan kijken welke varchar daar boven zit?

Ik heb zelf even een testtabel gemaakt met een varchar waar ik 2 timestamps in heb gezet.
Die van 1-1-2011 en 10-10-2011. Een in de toekomst en één in het verleden.

Als ik dan
1SELECT from_unixtime(timestamp, '%d-%m-%Y') AS datum FROM test WHERE timestamp <= NOW()


krijg ik ze beide

en met >= niks
  woensdag 16 februari 2011 @ 15:19:16 #22
334357 Emery
Heavy Metal King!
pi_92868214
Succes.
"My name is Emery and primarily I make noises - and ideas".
  woensdag 16 februari 2011 @ 15:20:06 #23
305897 remi1986
This MF is infected by madness
pi_92868254
quote:
6s.gif Op woensdag 16 februari 2011 15:19 schreef Emery het volgende:
Succes.
Opgelost?
pi_92868637
quote:
14s.gif Op woensdag 16 februari 2011 14:52 schreef Emery het volgende:

[..]

Hij zet de datum als unix_timestamp in een varchar veld.
Een unix timestamp is gewoon een getal, kan dus prima in een INT-veld :)

En verder zou ik de datum gewoon als timestamp uit de database halen. Je kunt op een veel later moment (namelijk als je alles op het scherm zet) nog wel bepalen hoe die datum precies op het scherm moet verschijnen.
pi_92874555
quote:
Ik heb je topic meerdere keren door gelezen maar kan niet vinden wat ik fout doe!

Daarbij komt dat ik niets anders weet om te zoeken op tags, en aangezien ik dat wel wil heb ik dit geprobeerd. Kun je mij wijzen op,mijn fouten zodat ik er van kan leren?
Just say hi!
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')