Pagina 1 din 2 12 UltimulUltimul
Rezultate 1 la 10 din 19

Subiect: Interogarea query-urilor din baza de date se face foarte greu

  1. #1
    Avatarul lui zgabu
    zgabu este deconectat Junior SeoPedia
    Reputatie:
    0
    Data înscrierii
    20th May 2006
    Posturi
    99
    Putere Rep
    0


    Implicit Interogarea query-urilor din baza de date se face foarte greu

    Nu stiu daca am postat unde trebuie, dar am o problema spinoasa de rezolvat.
    Ideea este ca am o baza de date cu filme, de 14.000 interogari, si cand ii dau listare cu afisare 10 pe pagina, imi ia cam 5-6 minute pana incarca rezultatele, pt urmatoarele 10 rezultate astept cam la fel. Ideea este ca daca eu caut dupa ceva, imi afiseaza rezultatele imediat.

    Asta este sursa fisierului ce interogheaza baza de date: www.eeusoft.ro/test/search.txt
    si capul tablelelor, pt titlul filmului: www.eeusoft.ro/test/1.jpg
    si detaliile filmului: www.eeusoft.ro/test/2.jpg

    si aici este formularul, sa va faceti o idee: Cautare filme

    Stiu ca gresesc undeva la interogare, dar nu imi dau seama unde gresesc. Are cineva vreo idee?
    Merci anticipat.

  2. #2
    Avatarul lui avram
    avram este deconectat Membru SeoPedia
    Reputatie:
    60
    Data înscrierii
    7th May 2011
    Posturi
    1.361
    Putere Rep
    60


    Implicit

    ALTER TABLE ov_detalii_film ADD FULLTEXT(REGIA, SCENARIUL,GENUL,Clasif);
    si schimba in SELECT MATCH AGAINST
    Ultima modificare făcută de avram; 27th March 2014 la 20:01.
    ░▒▓█▄▀▄▀▄▀▄▀▄▀▄▀█▓▒░

  3. #3
    Avatarul lui zgabu
    zgabu este deconectat Junior SeoPedia
    Reputatie:
    0
    Data înscrierii
    20th May 2006
    Posturi
    99
    Putere Rep
    0


    Implicit

    tot greu se incarca

  4. #4
    Avatarul lui kleampa
    kleampa este deconectat Ambasador
    Reputatie:
    53
    Data înscrierii
    31st May 2006
    Locaţie
    Bucuresti
    Vârstă
    36
    Posturi
    1.597
    Putere Rep
    53


    Implicit

    mie mi-a gasit dupa "america" acceptabil in 1-2 secunde
    as mai folosi id-uri cu indecsi pentru gen si clasificare
    Membru fondator al societății secrete Afiliatti.

  5. #5
    Avatarul lui puthre
    puthre este deconectat Ambasador
    Reputatie:
    82
    Data înscrierii
    21st February 2011
    Locaţie
    București
    Posturi
    2.154
    Putere Rep
    82


    1 out of 1 members found this post helpful.

    Implicit

    Iti merge greu pentru ca queryul ala al tau nu are nici o sansa sa mearga fara sa treaca prin toata baza de date.
    In primul rand trebuie sa faci o tabela de cuvinte apoi un reverse index.

    Adica:


    Cod:
    +++++++++++++++
    + ID + Cuvant      +
    +++++++++++++++
    + 1 +  TAPSI        +
    + 2 +  CEL           +
    + 3 +  MAI           +
    + 4 +  MIC           +
    + 5 +  URECHEAT  +
    ....
    
    si
    
    
    +++++++++++++++++++++++++++++++
    + id + cuvant_id   + film_id  +  camp_ID+
    ++++++++++++++++++++++++++++++
    + 1 +  1              + 26       +  2         +
    + 2 +  2              + 26       +  2         +
    + 3 +  1              + 26       +  3         +
    + 4 +  2              + 26       +  3         +
    ......



    unde camp_id e campul unde se gaseste cuvantul in inregistrarea din film

    Apoi cautarea o faci pe cuvintele din reverse index (cautare exacta, fara LIKE) care te duce direct la id-ul de film si campul din care face parte.

    Fara reverse index, la ce vrei tu sa faci acolo, orice optimizare ai face tot o sa faca full table scan.
    Caut cu jingle.ro.

  6. #6
    Avatarul lui filip.camara
    filip.camara este deconectat Membru SeoPedia
    Reputatie:
    36
    Data înscrierii
    27th October 2010
    Locaţie
    Romania, Bucuresti
    Posturi
    287
    Putere Rep
    36


    Implicit

    Incearca si asa:

    SELECT ov_filme.*, ov_detalii_film.*
    FROM ov_filme AS ov_filme
    INNER JOIN ov_detalii_film AS ov_detalii_film
    ON ov_filme.ID_film=ov_detalii_film.id_film and $construct AND $construct_regizor AND $construct_scenarist AND $construct_tip_film AND $construct_clasificare
    ORDER BY `ov_filme`.`ID_film` DESC

    Experienta mea e bazata in mare parte pe Microsoft SQL, dar presupun ca toate bazele de date functioneaza la fel.

    Adica prima data se obtine un set realizat din join, care evident contine toata lista de filme, iar acest set mare este filtrat apoi de clauza where.
    In principiu, Microsoft SQL stie sa-ti optimizeze singur query-ul si sa-ti urce clauzele din where in on. In cazul tau, in functie de ce server folosesti e posibil sa nu.

    Pasul 2 este sa creezi indecsi pe toate campurile pe care le filtrezi.

  7. #7
    Avatarul lui puthre
    puthre este deconectat Ambasador
    Reputatie:
    82
    Data înscrierii
    21st February 2011
    Locaţie
    București
    Posturi
    2.154
    Putere Rep
    82


    Implicit

    Deleted - Wrong thread.
    Ultima modificare făcută de puthre; 28th March 2014 la 11:43.
    Caut cu jingle.ro.

  8. #8
    Avatarul lui zgabu
    zgabu este deconectat Junior SeoPedia
    Reputatie:
    0
    Data înscrierii
    20th May 2006
    Posturi
    99
    Putere Rep
    0


    Implicit

    Filip, am rulat si query-ul tau, am adaugat indecsi pentru toate campurile care apar in WHERE, dar din pacate se incarca la fel de greu.
    Puthre, primesc baza de date modificata lunar, habar n-am cum sa fac ce ai spus (nu sunt asa de avansat in mysql).
    Va multumesc pentru sfaturi.

    Cred ca trebuie refacuta acea parte cap coada, si n-am nici o idee cum.

  9. #9
    Avatarul lui puthre
    puthre este deconectat Ambasador
    Reputatie:
    82
    Data înscrierii
    21st February 2011
    Locaţie
    București
    Posturi
    2.154
    Putere Rep
    82


    Implicit

    Citat Postat în original de zgabu Vezi Post
    Puthre, primesc baza de date modificata lunar, habar n-am cum sa fac ce ai spus (nu sunt asa de avansat in mysql).
    In mysql ai de facut 2 tabele. Nu e nimic avansat. Restul de face din php.
    Caut cu jingle.ro.

  10. #10
    Avatarul lui zgabu
    zgabu este deconectat Junior SeoPedia
    Reputatie:
    0
    Data înscrierii
    20th May 2006
    Posturi
    99
    Putere Rep
    0


    Implicit

    pai tabelele sunt facute, programarea in php este facuta, dar este facuta basic, in sensul ca nu interoghez cum trebuie baza de date, caci se incarca foarte greu. Trebuie sa incarce cumva doar prima pagina, nu toata baza de date.

Pagina 1 din 2 12 UltimulUltimul

Informații subiect

Utilizatori care navighează în acest subiect

Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)

Thread-uri Similare

  1. accesul la baza de date
    De gupi în forumul Discutii administrative
    Răspunsuri: 20
    Ultimul Post: 20th November 2011, 02:07
  2. Hostgator reseller hosting se incarca foarte greu
    De Popescu Marian în forumul Hosting
    Răspunsuri: 4
    Ultimul Post: 22nd August 2009, 22:47
  3. Baza de date :)
    De Sebastian în forumul Bar, lobby...
    Răspunsuri: 3
    Ultimul Post: 10th September 2008, 00:05
  4. Google face noi precizari in privinta click-urilor false
    De Aurel Dragut în forumul Bar, lobby...
    Răspunsuri: 0
    Ultimul Post: 2nd March 2007, 12:15
  5. Baza de date
    De eRwin în forumul Server side
    Răspunsuri: 5
    Ultimul Post: 26th August 2005, 10:10

Permisiuni postare

  • Nu puteţi posta subiecte noi.
  • Nu puteţi răspunde la subiecte
  • Nu puteţi adăuga ataşamente
  • Nu puteţi modifica posturile proprii
  •