Avatar billede znopie Nybegynder
31. august 2008 - 00:41 Der er 3 kommentarer og
1 løsning

Optimer forespørgsel

Hej eksperter,

Jeg har et problem med at min forespørgsel tager for lang tid. I min tabel "kata" har jeg ca. 126856 rækker. Mit script ser således ud:
    if ($_POST['soeg']) {
        $GET_search  = mysql_query("SELECT name,ean_numb,el_numb,price FROM kata WHERE MATCH (name,el_numb,ean_numb) AGAINST ('".mysql_real_escape_string($_POST['value'])."' IN BOOLEAN MODE)") OR DIE( mysql_error() );
        $GET_discount = mysql_query("SELECT rabat.grp_proc,rabat.grp_name FROM rabat,kata WHERE kata.grp_produkt=rabat.grp_numb") OR DIE( mysql_error() );

        echo "<table cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\">";
        echo "<tr><td align=\"center\" colspan=\"5\" align=\"center\">Søgning på : <b>".$_POST['value']."</b></td></tr>";
        echo "<tr> <td>Navn</td> <td>EAN-Nummer</td> <td>EL-Nummer</td> <td>Pris</td> <td>Gruppe</td> </tr>";
       
        if (mysql_num_rows($GET_search) == NULL) {
            echo "<tr><td align=\"center\" colspan=\"5\">Intet resultat!</tr></td>";
            echo "<tr><td align=\"center\" colspan=\"5\">".$string."</tr></td>";
        } else {
            while($show = mysql_fetch_array($GET_search) AND $discount = mysql_fetch_array($GET_discount)) {
                echo "<tr>\n";
                echo "<td>".$show['name']."</td>";
                echo "<td>".$show['ean_numb']."</td>";
                echo "<td>".$show['el_numb']."</td>";
                echo "<td>".price($show['price'])." DKK excl. moms.</td>";
                echo "<td>".$discount['grp_name']." (".(($discount['grp_proc'] != NULL) ? substr($discount['grp_proc'], 0,2).".".substr($discount['grp_proc'], 2,2) : "0.0")."%)</td>";
                echo "\n</tr>\n";
            }
        echo "</table>";
        }
    }
Avatar billede erikjacobsen Ekspert
31. august 2008 - 07:51 #1
Jeg kan ikke se, at det du laver giver mening - hvordan kan du vide at resultatet fra $GET_search og $GET_discount passer sammen?

Du skal måske kun lave een sql-forespørgsel, hvor du tager den første, og laver din join fra nummer 2 i den.

Men du bliver nødt til at forklare hvad du har i tabellerne, og hvad du vil.
Avatar billede jakobdo Ekspert
31. august 2008 - 07:57 #2
Du bør nok oprette nogle index'er på dine søge felter.
Og du kan nok også finde lidt inspiration her: http://dev.mysql.com/tech-resources/presentations/presentation-oscon2000-20000719/index.html

Og du ville nok endda få bedre hjælp, hvis du spørger i mysql kategorien.
Avatar billede znopie Nybegynder
04. september 2008 - 18:20 #3
Har fundet ud af hvad problemet er. Det er min $discount der halter lidt. Så skal have fundet en anden måde på at få den til at være lidt hurtigere.

Tak for jeres svar. Hvis i syntes i vil have points for jeres tid, så læg et svar
Avatar billede erikjacobsen Ekspert
04. september 2008 - 18:32 #4
Ingen point til mig, tak.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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