abonnement Unibet Coolblue Bitvavo
  maandag 23 april 2007 @ 14:58:28 #91
108558 Messenga
goeiendag wat een geheel!
pi_48633459
Ah, werkt! Thanks.
pi_48642063
Iemand misschien tips waarom MySQL met subqueries stronttraag wordt? Een pagina van 0.02 seconden laadtijd wordt opeens 1.22 seconden :)

Mijn geval:

1
2
3
4
WHERE NOT EXISTS 
(SELECT * FROM Bookmarks 
WHERE UserID = ".mysql_real_escape_string($userid)." 
AND PostID = post.ID)


Ik zoek dus basicly alle velden die géén bookmark hebben. Een bookmark zet ik door een record aan te maken met het PostID dat ik wil bookmarken, en de bijbehorende UserID, een bookmark verwijder ik door dit record te verwijderen.

Alvast bedankt!
pi_48642385
quote:
Op maandag 23 april 2007 18:53 schreef Geqxon het volgende:
Iemand misschien tips waarom MySQL met subqueries stronttraag wordt? Een pagina van 0.02 seconden laadtijd wordt opeens 1.22 seconden

Mijn geval:
[ code verwijderd ]

Ik zoek dus basicly alle velden die géén bookmark hebben. Een bookmark zet ik door een record aan te maken met het PostID dat ik wil bookmarken, en de bijbehorende UserID, een bookmark verwijder ik door dit record te verwijderen.

Alvast bedankt!
Door een EXPLAIN te doen kom je erachter wat het is dat je pagina zo traag maakt.
pi_48642489
Ik merk nu ook dat ik de "fucking google" had moeten "use-en", want het is een bekend probleem. Sorry, zal dit voortaan eerst even doen
pi_48643308
quote:
Op maandag 23 april 2007 18:53 schreef Geqxon het volgende:
Ik zoek dus basicly alle velden die géén bookmark hebben. Een bookmark zet ik door een record aan te maken met het PostID dat ik wil bookmarken, en de bijbehorende UserID, een bookmark verwijder ik door dit record te verwijderen.
kan je dat niet gewoon met een JOIN doen?
en dan op != NULL checken?
pi_48643444
quote:
Op maandag 23 april 2007 19:28 schreef Xcalibur het volgende:

[..]

kan je dat niet gewoon met een JOIN doen?
en dan op != NULL checken?
Ik wil juist alle berichten in het systeem hebben die geen veld in de "Bookmarks" tabel hebben, dus een JOIN op iets dat bestaat lijkt mij so far niet mogelijk
pi_48643874
quote:
Op maandag 23 april 2007 19:32 schreef Geqxon het volgende:

[..]

Ik wil juist alle berichten in het systeem hebben die geen veld in de "Bookmarks" tabel hebben, dus een JOIN op iets dat bestaat lijkt mij so far niet mogelijk
Misschien denk ik te simpel hier, maar werkt een simpele left join niet zo? Vervolgens zet je in de where-clause iets dat alles er uit filtert dat niet null is. Dat gecombineerd met een index op de fk zou toch wel redelijke perfmance moeten geven.
pi_48644039
1
2
3
4
SELECT subscriptions.* 
FROM subscriptions 
LEFT OUTER JOIN clients ON subscriptions.clientcode = clients.clientcode
WHERE clients.clientcode IS NULL


Deze query pakt bij mij alle records uit de Subscriptions tabel die geen record hebben in de Client tabel :)... Volgens mij moet dit in jouw situatie ook werken?
  maandag 23 april 2007 @ 19:46:08 #99
104583 cyberstalker
Een krachtig neen!
pi_48644049
quote:
Op maandag 23 april 2007 19:42 schreef Aibmi het volgende:

[..]

Misschien denk ik te simpel hier, maar werkt een simpele left join niet zo? Vervolgens zet je in de where-clause iets dat alles er uit filtert dat niet null is. Dat gecombineerd met een index op de fk zou toch wel redelijke perfmance moeten geven.
Klopt. Je doet een LEFT JOIN tussen de twee tabellen. Vervolgens plaats je in de where-clause iets als "Bookmarks.PostID IS NULL"
Hope for the best, prepare for the worst.
pi_48644129
Dat zeg ik
pi_48644378
Maar dan JOIN je met een niet bestaand record? Is iets als dat uberhaupt mogelijk? Ik ga er eens mee klooien, mijn query is toch al bezopen groot
pi_48644508
quote:
Op maandag 23 april 2007 19:54 schreef Geqxon het volgende:
Maar dan JOIN je met een niet bestaand record? Is iets als dat uberhaupt mogelijk? Ik ga er eens mee klooien, mijn query is toch al bezopen groot
Een left join pakt alle records uit een tabel, en plaatst daar dan de bijbehorende informatie naast. In tegenstelling tot een inner join komt hier een null uit als er geen corresponderende record bij hoort.
pi_48644977
quote:
Op maandag 23 april 2007 19:57 schreef Aibmi het volgende:

[..]

Een left join pakt alle records uit een tabel, en plaatst daar dan de bijbehorende informatie naast. In tegenstelling tot een inner join komt hier een null uit als er geen corresponderende record bij hoort.
Mooi.

Ik ben er nog steeds aan het knutselen, aangezien mijn SQL query boven de 500 karakters zit is het een beetje een geworstel
  maandag 23 april 2007 @ 20:14:18 #104
107951 JortK
Immer kwaliteitsposts
pi_48645153
quote:
Op maandag 23 april 2007 20:10 schreef Geqxon het volgende:

[..]

Mooi.

Ik ben er nog steeds aan het knutselen, aangezien mijn SQL query boven de 500 karakters zit is het een beetje een geworstel
zoek op LEFT OUTER JOIN
pi_48645205
Nou, ik denk dat ik toch maar op de MySQL update wacht die subquerys sneller maakt. Het is helaas niet mogelijk om de LEFT JOIN in mijn query te stoppen, ik gok dat hij niet compatible is met de andere WHERE clauses.
  maandag 23 april 2007 @ 20:22:01 #106
107951 JortK
Immer kwaliteitsposts
pi_48645512
quote:
Op maandag 23 april 2007 20:15 schreef Geqxon het volgende:
Nou, ik denk dat ik toch maar op de MySQL update wacht die subquerys sneller maakt. Het is helaas niet mogelijk om de LEFT JOIN in mijn query te stoppen, ik gok dat hij niet compatible is met de andere WHERE clauses.
Jawel die moet het gewoon doen hoor

EDIT

kijk maar

1
2
3
4
5
6
<?php
SELECT 
FROM T1 LEFT JOIN
              
(T2,T3)
              
ON (T2.A=T1.AND T3.B=T2.B)
  
WHERE T3.0.
?>


http://dev.mysql.com/doc/(...)-simplification.html

pi_48645728
Helaas, ondanks dat ik in mijn query "c.ID" (c alsin "FROM Catagorie AS c") een keer of 3 a 4 gebruik herkent hij hem niet binnen de LEFT JOIN.

Het is op zich wel te doen, de traagheid, ik zocht dan ook meer een simpele fix ervoor. Want anders wordt mijn query denk ik ook veel te lang
  maandag 23 april 2007 @ 20:28:01 #108
107951 JortK
Immer kwaliteitsposts
pi_48645823
quote:
Op maandag 23 april 2007 20:26 schreef Geqxon het volgende:
Helaas, ondanks dat ik in mijn query "c.ID" (c alsin "FROM Catagorie AS c") een keer of 3 a 4 gebruik herkent hij hem niet binnen de LEFT JOIN.

Het is op zich wel te doen, de traagheid, ik zocht dan ook meer een simpele fix ervoor. Want anders wordt mijn query denk ik ook veel te lang
Hoezo een query krijg je toch wel overzichtelijk?

Goede spacing en wat comment regels, daar wordt je query echt niet trager van hoor

* JortK heeft eenmaal een query van 500kb geschreven, voor het verwijderen van dubbele contacten met koppel tabellen en shit, en dat ging nog best
pi_48645961
Hij haalt de posts op, kopelt dat aan een catogorie, kijkt of de gebruiker wel toegang heeft, kijkt op de post niet ouder dan 7 dagen is én dan wil ik nog de check doen dat de bookmark van type A wel aangevinkt is, en de bookmark van type B niet. Op het moment met de subquery is dat prima overzichtelijk te houden met mooie spacing en enters, maar als ik op meerdere plekken bij elkaar horende code ga plakken wordt het een rotzooitje.

Daarnaast werk ik in PHP wat query's betreft, dus comments binnen de query zelf ..... via /* */ oid?
pi_48646023
quote:
Op maandag 23 april 2007 20:28 schreef JortK het volgende:

[..]

* JortK heeft eenmaal een query van 500kb geschreven, voor het verwijderen van dubbele contacten met koppel tabellen en shit, en dat ging nog best
Ik durf met een gerust hart te zeggen dat als je een query van 500KB hebt, je iets gruwelijks fout doet. (men heeft daarvoor stored procedures, views en meer van dat soort leuke meuk voor verzonnen)
  maandag 23 april 2007 @ 20:34:51 #111
107951 JortK
Immer kwaliteitsposts
pi_48646159
quote:
Op maandag 23 april 2007 20:32 schreef JeRa het volgende:

[..]

Ik durf met een gerust hart te zeggen dat als je een query van 500KB hebt, je iets gruwelijks fout doet. (men heeft daarvoor stored procedures, views en meer van dat soort leuke meuk voor verzonnen)
Klopt, in de query staat dus ook het aanmaken van de SP's en views

En ook weer het verwijderen ervan

En ook een aantal tijdelijke tabellen die aangemaakt worden, was een eenmalige actie, en wel zo makkelijk als het allemaal in een .SQL bestand staat

Alhoewel views in MS-SQL af en toe de boel echt goed traag kunnen maken
  maandag 23 april 2007 @ 21:11:07 #112
108558 Messenga
goeiendag wat een geheel!
pi_48647535
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
<form>
<
select name="namenlijst">
<
option value="x">Selecteer je keuze
<tr>

$result mysql_query("SELECT naam FROM gebruikers") or die (mysql_error());
while(
$aBerichten mysql_fetch_array($result)) {
print 
"<option value="" . $aBerichten['naam'] . "></option>";
}
 
</select></td>
</tr>
</FORM>]
?>


Hier moet de bovenstaande code de gegevens uit de database halen en in het dropdown menu zetten. Die gegevens bestaan uiteraard :'). Waarom werkt dit dan niet?
  maandag 23 april 2007 @ 21:13:09 #113
107951 JortK
Immer kwaliteitsposts
pi_48647627
quote:
Op maandag 23 april 2007 21:11 schreef Messenga het volgende:

[ code verwijderd ]

Hier moet de bovenstaande code de gegevens uit de database halen en in het dropdown menu zetten. Die gegevens bestaan uiteraard . Waarom werkt dit dan niet?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
<form>
<
select name="namenlijst">
<
option value="x">Selecteer je keuze
<tr>

$result mysql_query("SELECT naam FROM gebruikers") or die (mysql_error());
while(
$aBerichten mysql_fetch_array($result)) {
print 
"<option value="" . $aBerichten['naam'] . ""></option>";
}
 
</
select></td>
</
tr>
</
FORM>]
?>


Zo nog eens proberen?
pi_48647641
Omdat je " bij print gebruikt, en ook bij value="
Dan raakt PHP in de war ;)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
<form>
<
select name="namenlijst">
<
option value="x">Selecteer je keuze
<tr>

$result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error());
while(
$aBerichten = mysql_fetch_array($result)) {
print
"<option value=\"" . $aBerichten['naam'] . "\"></option>";
}

</
select></td>
</
tr>
</
FORM>]
?>
  maandag 23 april 2007 @ 21:27:48 #115
108558 Messenga
goeiendag wat een geheel!
pi_48648214
Ik heb ze allebei geprobeerd, maar het is net alsof hij de PHP code gewoon niet pakt.
  maandag 23 april 2007 @ 21:29:22 #116
104583 cyberstalker
Een krachtig neen!
pi_48648290
quote:
Op maandag 23 april 2007 21:27 schreef Messenga het volgende:
Ik heb ze allebei geprobeerd, maar het is net alsof hij de PHP code gewoon niet pakt.
Zet eens
1
2
3
<?php
error_reporting
(E_ALL);
?>
bovenaan in je script en plaats de uitvoer hier.
Hope for the best, prepare for the worst.
  maandag 23 april 2007 @ 21:29:38 #117
88418 _Xbox_Master_
Low frequency specialist
pi_48648304
quote:
Op maandag 23 april 2007 21:27 schreef Messenga het volgende:
Ik heb ze allebei geprobeerd, maar het is net alsof hij de PHP code gewoon niet pakt.
Zo dus op het moment:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
<form>
<
select name="namenlijst">
<
option value="x">Selecteer je keuze
<tr>

$result = mysql_query("SELECT naam FROM gebruikers") or die (mysql_error());
while(
$aBerichten = mysql_fetch_array($result)) {
print
"<option value='" . $aBerichten['naam'] . "'></option>";
}

</
select></td>
</
tr>
</
FORM>
?>


Hij blijft dus op 1 of andere manier vreemd doen met de 'en " ?
~ Grolsch flesjes bewegen onevenredig niet significant met de treinrichting
  maandag 23 april 2007 @ 21:32:59 #118
88418 _Xbox_Master_
Low frequency specialist
pi_48648449
Er worden geen errors weergegeven.....

Ik werk samen aan deze code met Messenga
~ Grolsch flesjes bewegen onevenredig niet significant met de treinrichting
  maandag 23 april 2007 @ 21:33:03 #119
108558 Messenga
goeiendag wat een geheel!
pi_48648451
quote:
Op maandag 23 april 2007 21:29 schreef cyberstalker het volgende:

[..]

Zet eens

[ code verwijderd ]
bovenaan in je script en plaats de uitvoer hier.
Er komt dus ook totaal geen error reporting
  maandag 23 april 2007 @ 21:36:17 #120
108558 Messenga
goeiendag wat een geheel!
pi_48648624
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
 
include('functies.php'); 

error_reporting(E_ALL);


<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<
head>
<
title>Vrijdag Snack de Waerdenborch Home</title>
<
meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
<
link rel="stylesheet" type="text/css" href="style.css" />
<
style type="text/css">
<!--
.
style1 {font-familyGeorgia"Times New Roman"Timesserif}
-->
</
style>
<
link href="style.css" rel="stylesheet" type="text/css" />
</
head>
<
body>
    <
div id="wrapper">
        <
div class="style1" id="top">        </div>
        <
div id="content">
            <
div class="style1" id="header">
              <
p>&nbsp;</p>
              <
p>&nbsp;</p>
            </
div>
            <
div id="menu">
                <
ul>
                    <
li><a href="index.html">Home</a>
                      <
ul>
                        <
li><a href="Aanwezig.html">Aanwezigheid</a></li>
                      </
ul>
                    </
li>
                    <
li><a href="Bestelling.html">Bestellingen</a></li>
                    <
li><a href="kostenoverzicht.html">Kostenoverzicht</a></li>
                    <
li></li>
                </
ul>
          </
div>
          <
div id="stuff">
            <
p>Welkom    op de website voor de vrijdagmiddag snack van de Waerdenborch.</p>
            <
p>Hier kunt u uw bestellingen per week aangevenDaarbij zult u per week kunnen zien wie wanneer betaaltDoor op het kostenoverzicht te klikken kunt u zien wat de kosten zijnZowel per persoon als een totaaloverzicht. </p>
            <
pHier kies je je naam:</p>
<
form>
<
select name="namenlijst">
<
option value="x">Selecteer je keuze
<tr>

$result mysql_query("SELECT naam FROM gebruikers") or die (mysql_error());
while(
$aBerichten mysql_fetch_array($result)) {
print 
"<option value='" $aBerichten['naam'] . "'></option>";
}

</
select></td>
</
tr>
</
FORM>


<
p>Hier kies je je keuze voor de snack: </p>
 <
form>
<
select name="snacklijst">
<
option value="x">Selecteer je keuze
<tr>

$result mysql_query("SELECT naam FROM gebruikers") or die (mysql_error());
while(
$aBerichten mysql_fetch_array($result)) {
    print 
"<option value="" . $aBerichten['naam'] . ""></option>";
}

</
select></td>
</
tr>
</
FORM>


Hier kies je je Saus:
 <
form>
<
select name="sauslijst">
<
option value="x">Selecteer je keuze
<tr>

$result mysql_query("SELECT product FROM producten WHERE type = " saus") or die (mysql_error());
while($aBerichten = mysql_fetch_array($result)) {
print "
<option value="" $aBerichten['saus'] . "></option>";
}
 
</
select></td>
</
tr>
</
FORM>


            <
p>&nbsp;  </p>
            <
FORM action="BestellingOpgeslagen.html">
              <
input name="Submit" type="submit" value="Opslaan" />
</
form>
            <
p>&nbsp;</p>
            <
p>&nbsp;</p>
            <
p>&nbsp;</p>
            <
p>&nbsp;</p>
            <
p>&nbsp;</p>
            
            <
p><br />
              <
br />
              <
a href="http://validator.w3.org/check?uri=referer"></a> </p>
          </
div>
        </
div><div id="bottom"></div>
    </
div>
</
body>
</
html>
?>


Hier is de code van de gehele pagina,voor zover nodig.

we zien beden de fout gewoon niet :{
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')