webhostingtalk.nl
advertentie
advertentie

Evenementen voor de komende 60 Dag(en)

Pagina 1 van de 2 1 2 LaatsteLaatste
Resultaten 1 tot 15 van de 28
          

  1.  
    #1
    geregistreerd gebruiker
    33 Berichten
    Ingeschreven
    09/10/06

    Locatie
    Essen

    0 Berichten zijn liked

    timvermaesen is offline.

    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Wat zegt dit over de webhoster?

    Ik heb een php pagina waarin ik 2 zoekresultaten oproep van 2 databases. Database 1 heeft 2 tabellen met elk bijna een miljoen records (beide samen bijna twee milj), waaronder zinnen. Database 2 heeft ook 2 tabellen met evenveel data als db1, maar hier geen lange zinnen.
    Elke database is niet groter dan 50 MB.

    De zoekresultaten bestaan uit max zoveel regels (25), en er wordt maar in 1 tabel per database gezocht.

    Nu laadt de pagina retetraag, en dus mijn vraag wat dit zegt over de webhoster van mijn shared account. Of zijn mijn databases gewoon veeeeel te zwaar voor een shared account.


  2.  
    #2
    geregistreerd gebruiker
    27 Berichten
    Ingeschreven
    05/06/11

    Locatie
    Hilversum

    5 Berichten zijn liked

    Marcellow is offline.

    Registrar SIDN: ja
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Het ligt er helemaal aan hoe de structuur van je tabellen er uit ziet en wat voor query je er op los laat.
    Als je bv een SELECT * from table where column1 = '%woord%' op een tabel met een miljoen records los laat,
    kan ik me voorstellen dat dat wel eventjes duurt voordat je een antwoord krijgt.


  3.  
    #3
    moderator
    3.793 Berichten
    Ingeschreven
    21/02/09

    Locatie
    Noord-Holland

    113 Berichten zijn liked

    Yourwebhoster is offline.

    Bedrijf: Yourwebhoster.eu
    Functie: baas
    URL: yourwebhoster.eu
    KvK nummer: 32165429
    View danielkoop's profile on LinkedIn

    Oorspronkelijk geplaatst door timvermaesen Bekijk Berichten
    Ik heb een php pagina waarin ik 2 zoekresultaten oproep van 2 databases. Database 1 heeft 2 tabellen met elk bijna een miljoen records (beide samen bijna twee milj), waaronder zinnen. Database 2 heeft ook 2 tabellen met evenveel data als db1, maar hier geen lange zinnen.
    Elke database is niet groter dan 50 MB.

    De zoekresultaten bestaan uit max zoveel regels (25), en er wordt maar in 1 tabel per database gezocht.

    Nu laadt de pagina retetraag, en dus mijn vraag wat dit zegt over de webhoster van mijn shared account. Of zijn mijn databases gewoon veeeeel te zwaar voor een shared account.
    Dit is zoals Marcellow aangeeft afhankelijk van de query, de type data, hoe de indexen gemaakt zijn, de cache van de hoster, etc etc etc.. Veel records zorgen er voor dat de server enorm traag kan worden en zoveel records icm complexe queries zijn veelal niet geschikt voor normale shared hosting omgevingen. Je kan ook zelf kijken of je cache in je applicatie kan programmeren, waardoor de resultaten maar één keer binnen de zoveel tijd opgehaald hoeft te worden.


  4.  
    #4
    geregistreerd gebruiker
    33 Berichten
    Ingeschreven
    09/10/06

    Locatie
    Essen

    0 Berichten zijn liked

    timvermaesen is offline.

    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Ik gebruik inderdaad zoiets:
    SELECT * FROM tabel WHERE kolom LIKE '%blabla%' ORDER BY RAND() LIMIT 0

    Is er dan een betere manier?


  5.  
    #5
    moderator
    3.793 Berichten
    Ingeschreven
    21/02/09

    Locatie
    Noord-Holland

    113 Berichten zijn liked

    Yourwebhoster is offline.

    Bedrijf: Yourwebhoster.eu
    Functie: baas
    URL: yourwebhoster.eu
    KvK nummer: 32165429
    View danielkoop's profile on LinkedIn

    Oorspronkelijk geplaatst door timvermaesen Bekijk Berichten
    Ik gebruik inderdaad zoiets:
    SELECT * FROM tabel WHERE kolom LIKE '%blabla%' ORDER BY RAND() LIMIT 0

    Is er dan een betere manier?
    Wat wil je precies bereiken/is het doel van het script?

    Klopt het dat je dus een query als deze door 4 miljoen records heen gooit?


  6.  
    #6
    geregistreerd gebruiker
    33 Berichten
    Ingeschreven
    09/10/06

    Locatie
    Essen

    0 Berichten zijn liked

    timvermaesen is offline.

    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Oorspronkelijk geplaatst door Yourwebhoster Bekijk Berichten
    Wat wil je precies bereiken/is het doel van het script?

    Klopt het dat je dus een query als deze door 4 miljoen records heen gooit?
    De pagina bevat zoekresultaten. Een zoekopdracht resulteert dan in een zoektocht in de 2 databases.

    En dat is wat ik dus gebruik om de data weer te geven.

  7. advertentie



  8.  
    #7
    Programmeur / Hoster
    2.727 Berichten
    Ingeschreven
    20/06/06

    Locatie
    Wijlre

    273 Berichten zijn liked

    systemdeveloper is offline.

    Naam: John Timmer
    Bedrijf: SystemDeveloper.NL
    Functie: Eigenaar
    URL: www.systemdeveloper.nl
    KvK nummer: 14083066
    View johntimmer's profile on LinkedIn

    Order by rand() is zóóóóóó fout... (en die limit 0 is een fout neem ik aan?)

    Edit: ter info.

    Een like '%blabla%' help je index gebruik al om zeep. Daarnaast is order by rand() een 100% performance killer. Mysql moet namelijk eerst je hele tabel scannen omdat je niet kunt indexeren op %blabla%. Daarnaast moet ie ook nog eens random een x aantal records selecteren uit je totale resultset.
    Dit kun je niet afschuiven op je hoster maar is puur een programmeursfout.

    Edit 2: resultsets zjn tijdelijke tabellen zónder index. Als ze in het ram passen is dat niet altijd zo heel erg, maar met een x mil. records gaat dat geheid naar schijf. Niet vooruit te branden dus.


  9.  
    #8
    moderator
    3.793 Berichten
    Ingeschreven
    21/02/09

    Locatie
    Noord-Holland

    113 Berichten zijn liked

    Yourwebhoster is offline.

    Bedrijf: Yourwebhoster.eu
    Functie: baas
    URL: yourwebhoster.eu
    KvK nummer: 32165429
    View danielkoop's profile on LinkedIn

    Oorspronkelijk geplaatst door timvermaesen Bekijk Berichten
    De pagina bevat zoekresultaten. Een zoekopdracht resulteert dan in een zoektocht in de 2 databases.

    En dat is wat ik dus gebruik om de data weer te geven.
    En waarom dan RAND()?

    En idd zoals Systemdeveloper aangeeft limit 0 is zeker een copy/paste foutje, daar was ik min of meer van uit gegaan.


  10.  
    #9
    geregistreerd gebruiker
    33 Berichten
    Ingeschreven
    09/10/06

    Locatie
    Essen

    0 Berichten zijn liked

    timvermaesen is offline.

    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Oorspronkelijk geplaatst door systemdeveloper Bekijk Berichten
    Order by rand() is zóóóóóó fout... (en die limit 0 is een fout neem ik aan?)
    SELECT * FROM tabel WHERE kolom LIKE '%blabla%' ORDER BY RAND() LIMIT 0, en hier komt automatisch een getal als limiet van het aantal weer te geven resultaten

    Ik ben die Order by rand() eens nader gaan bekijken en het schijnt inderdaad een extra belasting te geven. Erg bedankt om mij hierop te wijzen!


  11.  
    #10
    moderator
    5.196 Berichten
    Ingeschreven
    12/09/05

    Locatie
    Zuid Holland

    68 Berichten zijn liked

    Stewie is offline.

    KvK nummer: 14074337

    Jouw doel is alleen om het maximum aantal regels op te vragen, maar waarom vraag je dan de volledige tabel op in plaats van alleen het aantal regels? Staat in de code echt limit 0 of is dat als voorbeeld? In dat eerste geval heeft het geen zin om de resultaten in willekeurige volgorde weer te geven. In de select vraag je tevens alle kolommen op.


  12.  
    #11
    Programmeur / Hoster
    2.727 Berichten
    Ingeschreven
    20/06/06

    Locatie
    Wijlre

    273 Berichten zijn liked

    systemdeveloper is offline.

    Naam: John Timmer
    Bedrijf: SystemDeveloper.NL
    Functie: Eigenaar
    URL: www.systemdeveloper.nl
    KvK nummer: 14083066
    View johntimmer's profile on LinkedIn

    Oorspronkelijk geplaatst door timvermaesen Bekijk Berichten
    SELECT * FROM tabel WHERE kolom LIKE '%blabla%' ORDER BY RAND() LIMIT 0, en hier komt automatisch een getal als limiet van het aantal weer te geven resultaten

    Ik ben die Order by rand() eens nader gaan bekijken en het schijnt inderdaad een extra belasting te geven. Erg bedankt om mij hierop te wijzen!
    Dit omschrijven is trouwens geen makkelijke opgave. Wat je eigenlijk moet doen is een join maken met een fictieve tabel waarbij geen order by wordt gedaan, maar waarbij je on the fly de kans berekent dat een record wel/niet geselecteerd wordt. Voorbeelden kun je wel googlen en met wat aanpassingen werkend krijgen. Wij gebruiken het regelmatig voor tabellen met vele miljoenen records.
    Het zijn en blijven echter hersenbrekertjes


  13.  
    #12
    geregistreerd gebruiker
    33 Berichten
    Ingeschreven
    09/10/06

    Locatie
    Essen

    0 Berichten zijn liked

    timvermaesen is offline.

    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Oorspronkelijk geplaatst door Stewie Bekijk Berichten
    Jouw doel is alleen om het maximum aantal regels op te vragen, maar waarom vraag je dan de volledige tabel op in plaats van alleen het aantal regels? Staat in de code echt limit 0 of is dat als voorbeeld? In dat eerste geval heeft het geen zin om de resultaten in willekeurige volgorde weer te geven. In de select vraag je tevens alle kolommen op.
    Dat script gebruik ik al een hele tijd, en mijn doel is voor dat specifieke zoekopdracht maximum 25 regels weer te geven, en dit in random order.

    SELECT * FROM 'mijn tabel' WHERE 'mijn kolom' LIKE '%$zoekopdracht%' LIMIT 0, 25 ...en met die BY RAND() zorg ik ervoor dat de weergegeven resultaten voor iedereen anders is, maar steeds relevant.

    Nu heb ik gelezen dat die RAND() een probleem geeft voor grote databases, en dat er niet zo maar alternatieven voor handen zijn. Ik ben me hier nu in nog aan het verdiepen...


  14.  
    #13
    Programmeur / Hoster
    2.727 Berichten
    Ingeschreven
    20/06/06

    Locatie
    Wijlre

    273 Berichten zijn liked

    systemdeveloper is offline.

    Naam: John Timmer
    Bedrijf: SystemDeveloper.NL
    Functie: Eigenaar
    URL: www.systemdeveloper.nl
    KvK nummer: 14083066
    View johntimmer's profile on LinkedIn

    Oorspronkelijk geplaatst door timvermaesen Bekijk Berichten
    Dat script gebruik ik al een hele tijd, en mijn doel is voor dat specifieke zoekopdracht maximum 25 regels weer te geven, en dit in random order.

    SELECT * FROM 'mijn tabel' WHERE 'mijn kolom' LIKE '%$zoekopdracht%' LIMIT 0, 25 ...en met die BY RAND() zorg ik ervoor dat de weergegeven resultaten voor iedereen anders is, maar steeds relevant.

    Nu heb ik gelezen dat die RAND() een probleem geeft voor grote databases, en dat er niet zo maar alternatieven voor handen zijn. Ik ben me hier nu in nog aan het verdiepen...
    Je eerste probleem is de like '%---

    Door dat eerste % kan je index al niet meer gebruikt worden. Let wel.. het % op het einde is geen probleem.
    Het beste kun je dit deel oplossen met een 'match against' en een fulltext index.
    De rand() moet je oplossen zoals ik zei als je het goed wilt doen, maar uiteraard kun je je ook limiteren tot bv de laatste 10-20-30k records. Voor de user is dat meestal random genoeg.


  15.  
    #14
    [--]
    809 Berichten
    Ingeschreven
    28/05/06

    Locatie
    Breda

    58 Berichten zijn liked

    davinci is offline.

    Registrar SIDN: ja
    KvK nummer: 20125757

    als je perse random wil. kan je natuurlijk ook (in php) gaan voor iets als.

    Code:
    <?php
    //even snel
    $start=rand(0,1000000-25); // er vanuitgaand dat er precies 1000000 rijen zijn.
    $sql="SELECT id FROM table WHERE col='bla' LIMIT ".$start.", 25";


  16.  
    #15
    Programmeur / Hoster
    2.727 Berichten
    Ingeschreven
    20/06/06

    Locatie
    Wijlre

    273 Berichten zijn liked

    systemdeveloper is offline.

    Naam: John Timmer
    Bedrijf: SystemDeveloper.NL
    Functie: Eigenaar
    URL: www.systemdeveloper.nl
    KvK nummer: 14083066
    View johntimmer's profile on LinkedIn

    Oorspronkelijk geplaatst door davinci Bekijk Berichten
    als je perse random wil. kan je natuurlijk ook (in php) gaan voor iets als.

    Code:
    <?php
    //even snel
    $start=rand(0,1000000-25); // er vanuitgaand dat er precies 1000000 rijen zijn.
    $sql="SELECT id FROM table WHERE col='bla' LIMIT ".$start.", 25";
    Nee, dat kan niet (om minimaal 2 redenen) maar ook daar zit je met het probleem dat de mysql resultset tot aan het $start moet worden weggegooid (aan de serverkant).


Pagina 1 van de 2 1 2 LaatsteLaatste

Gelijkaardige Onderwerpen

  1. KPN & Blackberry... WAT zegt u me nu?
    Door Erik H. in forum Shared WebHosting
    Reacties: 7
    Laatste Bericht: 30/08/11, 16:30
  2. Reacties: 5
    Laatste Bericht: 14/04/11, 17:31
  3. Probleem met webhoster. Wat moet ik doen?
    Door LonghornDog in forum Shared WebHosting
    Reacties: 8
    Laatste Bericht: 15/10/06, 11:22
  4. Wat is/zegt overture?
    Door hires in forum Domeinnamen Algemeen
    Reacties: 2
    Laatste Bericht: 18/11/05, 11:43
  5. Wat doet een webhoster zoal?
    Door TPostman in forum Lounge
    Reacties: 9
    Laatste Bericht: 02/01/04, 13:29

Forum Rechten

  • Je mag geen nieuwe onderwerpen plaatsen
  • Je mag geen reacties plaatsen
  • Je mag geen bijlagen toevoegen
  • Je mag jouw berichten niet wijzigen
  •  



webhostingtalk.nl
Webhostingtalk.nl © copyright 2001-2013 Alle Rechten Gereserveerd.

Content Relevant URLs by vBSEO 3.6.0

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