abonnement Unibet Coolblue Bitvavo
pi_51802327
Maar dan moet hij dus (in mijn geval) 6621 keer een select query uitvoeren? Ik heb wat moeite een testcase op te zetten, maar zo uit mijn hoofd lijkt dit niet bijster veel rapper.
  dinsdag 24 juli 2007 @ 23:33:07 #102
84926 WyriHaximus
Release the hounds smithers!
pi_51802555
quote:
Op dinsdag 24 juli 2007 23:25 schreef Geqxon het volgende:
Maar dan moet hij dus (in mijn geval) 6621 keer een select query uitvoeren? Ik heb wat moeite een testcase op te zetten, maar zo uit mijn hoofd lijkt dit niet bijster veel rapper.
Zover ik weet voert hij eerst de sub query uit, en zet het resultaat daar van in IN. 2 queries afaik. Kan er totaal naast zitten. Jammer dat JortK op vakantie is die weet behoorlijk wat van SQL af .
phluphy for president!
pi_51802827
Volgens MySQL doe ik het iig goed:

1
2
3
SELECT table1.* FROM table1
  LEFT JOIN table2 ON table1.id=table2.id
  WHERE table2.id IS NULL;


.... nu moet ik wel zeggen dat ik heel stout weer implicit en explicit joins dwars door elkaar gebruik, maar dit maakt op de performance weinig uit.
  dinsdag 24 juli 2007 @ 23:44:45 #104
84926 WyriHaximus
Release the hounds smithers!
pi_51802940
Heb je indexes? Hoeveel data is het eingelijk? (Aantal reccords totale tabel grote.)
phluphy for president!
pi_51803237
2,500 bookmarks, 6,500 nieuwsartikelen, 70 categoriën en 250 categorië abbonementen. Niet veel dus

En jep, waar nodig geindexed.
  woensdag 25 juli 2007 @ 00:47:10 #106
84926 WyriHaximus
Release the hounds smithers!
pi_51804743
Niet bar veel dus . Maar geen idee verder waarom het zo traag is .
phluphy for president!
  woensdag 25 juli 2007 @ 01:09:49 #107
71919 wonderer
Hung like a My Little Pony
pi_51805154
Hoe kan ik uitvogelen hoeveelste in een resultset een bepaald record is? Bijvoorbeeld "select from producten where klant_id='1'" en dan wil ik weten hoeveelste de barbecue is in die lijst. Is daar iets makkelijks voor?
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
pi_51805604
quote:
Op woensdag 25 juli 2007 01:09 schreef wonderer het volgende:
Hoe kan ik uitvogelen hoeveelste in een resultset een bepaald record is? Bijvoorbeeld "select from producten where klant_id='1'" en dan wil ik weten hoeveelste de barbecue is in die lijst. Is daar iets makkelijks voor?
Puur SQL, of ook met PHP?
pi_51805662
- laat maar -

[ Bericht 82% gewijzigd door -Orion- op 25-07-2007 01:53:42 ]
Hier komt ooit nog iets interessants te staan.
  woensdag 25 juli 2007 @ 01:45:43 #110
71919 wonderer
Hung like a My Little Pony
pi_51805748
quote:
Op woensdag 25 juli 2007 01:36 schreef Geqxon het volgende:

[..]

Puur SQL, of ook met PHP?
Ook met PHP.
"Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
"My brain is too smart for me."
"We don't need no education." "Yes you do, you just used a double negative."
  woensdag 25 juli 2007 @ 07:48:16 #111
84926 WyriHaximus
Release the hounds smithers!
pi_51807621
quote:
Op woensdag 25 juli 2007 01:45 schreef wonderer het volgende:

[..]

Ook met PHP.
1
2
3
4
5
6
7
8
9
<?php
$i 
0;
$result executequery("blablabla");
while(
$row fetchrow($result))
{
$i++;
echo(
$i "e reccord:" $row);
}
?>

Zoiets?
phluphy for president!
pi_51807945
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$result 
mysql_query("SELECT product FROM producten WHERE klant_id='1");

$i 0;
while (
$row mysql_fetch_assoc($result)){
    if (
$row['product'] == "Barbecue"){
        
$row_number $i;
        break();
    }
    
    
$i++;
}

if (isset(
$row_number)){
    echo 
"Barbecue was nummer " $row_number " op de lijst.";
}
?>


Oid.
pi_51809295
Ik heb niet echt een vraag over MySQL maar wel één over PHP dus... ik verwacht dat-ie hier wel mag of niet?

Ik ben een beetje met classes aan het rommelen maar ik zie net iets over het hoofd waardoor het niet werkt... Kortom, tijd voor meer ogen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
        
require_once('anotherclass.php');

        class 
Baap
        
{
                
private $linkie;

                
public function doSomething()
                {
                        echo 
"zomg ";
                        
var_dump($linkie);
                }

                
public function __construct()
                {
                    
$linkie = new AnotherClass();
                    
var_dump($linkie);
                    echo 
"<br>";
                }
        }
?>


Ik heb dus twee classes waarvan er één in een include zit (en dus bovenin wordt eengeroepen). Nu heb ik dus in de __construct() dat-ie de tweede classe initialiseert en deze in de private variabele pleurt. Of tenminste dat wil ik, PHP denkt daar kennelijk anders over want in de functie doSomething is $linkie dus NULL. Ik ben al waar meer aan het proberen geweest maar ik zie 't niet meer... Kan iemand ff een aanwijzing geven?
Iemand dood maken met een blije mus is nooit grappig...
  woensdag 25 juli 2007 @ 10:09:39 #114
84926 WyriHaximus
Release the hounds smithers!
pi_51809429
quote:
Op woensdag 25 juli 2007 10:03 schreef DikkeSmikkel het volgende:
Ik heb niet echt een vraag over MySQL maar wel één over PHP dus... ik verwacht dat-ie hier wel mag of niet?

Ik ben een beetje met classes aan het rommelen maar ik zie net iets over het hoofd waardoor het niet werkt... Kortom, tijd voor meer ogen.
[ code verwijderd ]

Ik heb dus twee classes waarvan er één in een include zit (en dus bovenin wordt eengeroepen). Nu heb ik dus in de __construct() dat-ie de tweede classe initialiseert en deze in de private variabele pleurt. Of tenminste dat wil ik, PHP denkt daar kennelijk anders over want in de functie doSomething is $linkie dus NULL. Ik ben al waar meer aan het proberen geweest maar ik zie 't niet meer... Kan iemand ff een aanwijzing geven?
self::linkie ipv $linkie . Omdat linkie een member is van je class kan je hem niet als een gewonen $var opschrijven maar moet je aangeven dat je de member wilt self::var . Of en $this->linkie kan ook maar dat vind hij niet leuk als je in je constructor zit .

Ow en dit is het PHP en/of (My)SQL topic dus PHP dingen zijn nooit een probleem .
phluphy for president!
pi_51809760
In de constructor een nieuwe klasse definieëren, pas je wel op dat je geen lus krijgt?
pi_51809883
quote:
Op woensdag 25 juli 2007 10:09 schreef WyriHaximus het volgende:

[..]

self::linkie ipv $linkie . Omdat linkie een member is van je class kan je hem niet als een gewonen $var opschrijven maar moet je aangeven dat je de member wilt self::var . Of en $this->linkie kan ook maar dat vind hij niet leuk als je in je constructor zit .

Ow en dit is het PHP en/of (My)SQL topic dus PHP dingen zijn nooit een probleem .
Bedankt voor je snelle antwoord! Ik ga even verder puzzelen. Als ik er niet uit kom dan merk je dat vanzelf...
Iemand dood maken met een blije mus is nooit grappig...
pi_51809916
quote:
Op woensdag 25 juli 2007 10:22 schreef Geqxon het volgende:
In de constructor een nieuwe klasse definieëren, pas je wel op dat je geen lus krijgt?
De __contructor wordt toch maar 1x uitgevoerd toch?
Iemand dood maken met een blije mus is nooit grappig...
pi_51810051
quote:
Op woensdag 25 juli 2007 10:28 schreef DikkeSmikkel het volgende:

[..]

De __contructor wordt toch maar 1x uitgevoerd toch?
Als je in de constructor van "Auto" een nieuw "Auto" object aan maakt, krijg je een aardige lus. .


Trouwens: CSV.
XML.
  woensdag 25 juli 2007 @ 10:35:51 #119
84926 WyriHaximus
Release the hounds smithers!
pi_51810104
quote:
Op woensdag 25 juli 2007 10:27 schreef DikkeSmikkel het volgende:

[..]

Bedankt voor je snelle antwoord! Ik ga even verder puzzelen. Als ik er niet uit kom dan merk je dat vanzelf...
quote:
Op woensdag 25 juli 2007 10:28 schreef DikkeSmikkel het volgende:

[..]

De __contructor wordt toch maar 1x uitgevoerd toch?
Niet als je in de constructor van de class waar je in zit die zelfde class ook weer initialiseerd . Dan krijg je een loop .
phluphy for president!
pi_51810793
quote:
Op woensdag 25 juli 2007 10:35 schreef WyriHaximus het volgende:
Niet als je in de constructor van de class waar je in zit die zelfde class ook weer initialiseerd . Dan krijg je een loop .
Nee ok dan wel, maargoed dan is zit het geheel wel heel brak in elkaar. De opzet is, is dat ik een class heb met een aantal functies. Voor deze functies wordt een andere class gebruikt (AnotherClass). Daarom wil ik in de class Baap bij initialisatie de AnotherClass alvast zodat ik vanuit iedere functie in Baap AnotherClass kan gebruiken en dus niet bij iedere functie apart
1
2
3
<?php
$var 
= new AnotherClass();
?>

hoef uit te voeren.

Ik heb nu dus
1
2
3
<?php
self
::$linkie = new AnotherClass();
?>

wat ik voor zover ik heb gezien op PHP.net etc goed zou moeten zijn maar dan geeft var_dump($linkie) welke recht onder bovenstaande regel staat een NULL terug. Terwijl deze nu toch ingevuld had moeten zijn lijkt me.

$linkie is nu
1
2
3
<?php
private 
static $linkie;
?>
Iemand dood maken met een blije mus is nooit grappig...
pi_51810886
Laat maar, te vroeg geroepen.

1
2
3
<?php
var_dump
(self::$message);
?>

werkt wel overal...

Bedankt voor de hulp iig!
Iemand dood maken met een blije mus is nooit grappig...
pi_51813886
quote:
Op dinsdag 24 juli 2007 22:19 schreef Geqxon het volgende:
Weer een performance vraag, maar deze keer eentje met een groter effect. Alsin: 0.2 seconden versus 8 seconden.

Een simpele query, met een LEFT JOIN op een bookmarktabel. Nu wil ik dus graag alle nieuwsartikelen zien die de user gebookmarked heeft. Dus hop, de LEFT JOIN, en dan op de koppelende ID van de bookmarktabel een IS NOT NULL. Gaat zelfs over duizenden nieuwsartikelen prima, supersnel dus.

Nu wil ik zien welke nieuwsartikelen de user niet gebookmarked heeft. (For the record: Dit zijn er minder dan de wel gebookmarkte nieuwsartikelen). Dit doe ik door een IS NULL op het koppelend ID van de bookmark tabel te zetten. Probleem dus: Dit gaat vreselijk traag...

Zou dit misschien sneller op te lossen zijn? Ik weet dat JOINS traag kunnen zijn, en hiermee is dat duidelijk te zien.
Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOIN wat betreft de performance: heb je wel indices op de keys in beide tabellen? (dus in tabel 1 op de primary key, en in tabel 2 op de foreign key)
pi_51813958
tvp
pi_51814467
quote:
Op woensdag 25 juli 2007 12:45 schreef JeRa het volgende:

[..]

Met een LEFT JOIN met een IS NOT NULL op de gekoppelde tabel zeg je eigenlijk 'ik wil alle waarden van de gekoppelde tabellen die bestáán', en dat is dus gewoon een INNER JOIN wat betreft de performance: heb je wel indices op de keys in beide tabellen? (dus in tabel 1 op de primary key, en in tabel 2 op de foreign key)
Een INNER JOIN is een goede, ik bouw mijn querys altijd met MySQL PHP op waardoor ik nog niet zo "dynamisch" dacht.

Verder heb ik indices op de primary en foreign keys van de tabellen die belangrijk zijn, mede daarom vind ik het vreemd dat het zo traag gaat. Zelf gok ik dat hij alle bookmark-records afgaat, en dat voor elk nieuwsartikel. Iets dat de traagheid prima verklaard. :-)

[ Bericht 1% gewijzigd door Geqxon op 25-07-2007 13:16:39 ]
pi_51814622
@Geqxon

Je kunt altijd nog EXPLAIN gebruiken om erachter te komen wat MySQL intern doet om je query uit te voeren output van beide SELECTs kun je dan vergelijken.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')