Avatar billede hathor Nybegynder
22. januar 2011 - 03:46 Der er 8 kommentarer og
1 løsning

Udtræk af database med 200.000 ID'er er for stort

Jeg har en database, hvori der er en tabel der fylder 215 mb.

Jeg har brug for at udtrække samtlige unikke ID'er fra den tabel, der er ca. 196.000, plus 4 - 5 felter fra hvert ID, og loope dem igennem en algoritme.


Men udtrækket er for stort, og intet sker - det fejler bare, uden fejlmelding.

Hvad kan jeg gøre? Hvad er klogest at gøre?
Avatar billede arne_v Ekspert
22. januar 2011 - 03:53 #1
Hvilken query udfører du?

Hvordan fejler den?  (jeg kunne gætte på at den ikke fejler, men bare er så lang tid om det at du giver op)
Avatar billede jakobdo Ekspert
22. januar 2011 - 04:13 #2
Kan det et index problem ?
Avatar billede arne_v Ekspert
22. januar 2011 - 04:20 #3
Givet at vel ca. 90% af database performance problemer på eksperten.dk niveau kan løses ved bedre index er det jo ikke et dårligt bud.
Avatar billede jakobdo Ekspert
22. januar 2011 - 04:26 #4
Arne_v: Jeg er stiv og forsøgte bare at spille klog på de sene aftentimer, så godt ord igen. :o)
Avatar billede hathor Nybegynder
22. januar 2011 - 11:50 #5
Til at starte med, må jeg sige at jeg ad omveje er havnet i dette her, og at jeg ikke er ekspert - jeg er faktisk bare musiker - men på grund af en række af uheldige omstændigheder er jeg kommet til at hjælpe til på et site med 10.000 brugere. Jeg ANER ikke noget om index, men jeg ved at der kører et script der trimmer databasen dagligt.

Nå - men jeg har lavet et lille script, der skulle tjekke om der var entries i databasen der havde et billede, der ikke fandtes på serveren, og det ser sådan ud:

<?php

include_once ("../includes/db.inc.php");

$positiv = $db->get_results("SELECT id, thumb FROM Tabel");
foreach ( $positiv as $output ){
    $id = $output->id;
    $thumb = $output->thumb;
         
$filename = '../design_elements/billeder_heste/'.$thumb;


if (!file_exists($filename)) {
echo $id . "<br>";


}}

?>


Jeg fandt dog ud af, at scriptet ville køre, hvis jeg i min select lavede ("SELECT id, thumb FROM Tabel WHERE ID < 100000");


Så det blev ligesom min løsning. Først kørte jeg det med ID < 100000 og derefter med ID > 100000.

Her selecter den så kun to felter, men hver time kører der faktisk et job der selecter fra den samme database, og vælger 4 felter - jeg ved ikke, om det halverer kapaciteten fra 100000 til 50.000?

Uanset hvad, bliver det ikke udført. Og det ved jeg jo hvorfor nu.
Avatar billede sifuentes Nybegynder
27. januar 2011 - 16:54 #6
"og loope dem gennem en algoritme"? Du er vel ikke kommet til at danne et Kartesisk produkt?
Avatar billede hathor Nybegynder
08. marts 2011 - 02:33 #7
Lukker
Avatar billede hathor Nybegynder
08. marts 2011 - 02:33 #8
Jeg lukker tråden.
Avatar billede hathor Nybegynder
08. marts 2011 - 02:33 #9
Så post dog et svar når jeg klikker på det!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester