Rezultate 1 la 10 din 22

Subiect: Random from sql: cum sa il fac sa se incarce mai repede

Afișare hibrid

  1. #1
    Avatarul lui loco
    loco este deconectat Membru SeoPedia
    Reputatie:
    34
    Data înscrierii
    6th February 2008
    Posturi
    145
    Putere Rep
    34


    Implicit

    Citat Postat în original de deadworldisee Vezi Post
    SELECT * FROM produse AS a JOIN ( SELECT RAND( ) * ( SELECT MAX( id ) FROM produse ) AS id) AS b WHERE a.id >= b.id and categorie='$categorie' and subcategorie='$subcategorie' LIMIT 15
    Sa zicem ca ultimul id (adica MAX(ID)) este 250.
    RAND() * 250 da numar cu virgula, daca RAND() < 1.
    Folosim CEIL pentru a rotunji numarul si a sacapa de ,

    Asta nu putea fi scrisa ca
    SELECT * FROM produse AS a JOIN ( SELECT CEIL(RAND( )*( SELECT id FROM produse ORDER BY id DESC LIMIT 1 )) AS id) AS b WHERE a.id >= b.id and categorie='$categorie' and subcategorie='$subcategorie' LIMIT 15
    ?

    Adica de ce MAX(id) din moment ce este index pe id?

    Si varchar este poate avea maxim 255 caractere. de ce recomanzi char(255)? Spatiu risipit aiurea daca nu se folosesc toate caracterele.

    Iar functia asta ia doar id-ul random (b.id) dupa care returneaza rezultatele comparate cu acel id (afiseaza produsele cu id mai mare sau egal decat id-ul random in limita a 15. de exemplu, daca sunt 3 ce respecta conditia asta, doar 3)
    Ultima modificare făcută de loco; 3rd August 2008 la 19:37.

  2. #2
    Avatarul lui evolution
    evolution este deconectat Membru SeoPedia
    Reputatie:
    41
    Data înscrierii
    29th October 2006
    Locaţie
    Bucuresti
    Posturi
    997
    Putere Rep
    41


    Implicit

    Citat Postat în original de loco Vezi Post
    Asta nu putea fi scrisa ca
    SELECT * FROM produse AS a JOIN ( SELECT CEIL(RAND( )*( SELECT id FROM produse ORDER BY id DESC LIMIT 1 )) AS id) AS b WHERE a.id >= b.id and categorie='$categorie' and subcategorie='$subcategorie' LIMIT 15
    ?
    Se pare ca CEIL face sa se afiseze id-urile corect in url rescris .
    Dupa ce termin va anunt cu cat s-a imbunatatit viteza.

    Thank you my friends!

  3. #3
    Avatarul lui deadworldisee
    deadworldisee este deconectat Membru SeoPedia
    Reputatie:
    36
    Data înscrierii
    6th April 2008
    Locaţie
    iasi
    Vârstă
    39
    Posturi
    1.034
    Putere Rep
    36


    Implicit

    Citat Postat în original de loco Vezi Post
    Sa zicem ca ultimul id (adica MAX(ID)) este 250.
    RAND() * 250 da numar cu virgula, daca RAND() < 1.
    Folosim CEIL pentru a rotunji numarul si a sacapa de ,

    Asta nu putea fi scrisa ca
    SELECT * FROM produse AS a JOIN ( SELECT CEIL(RAND( )*( SELECT id FROM produse ORDER BY id DESC LIMIT 1 )) AS id) AS b WHERE a.id >= b.id and categorie='$categorie' and subcategorie='$subcategorie' LIMIT 15
    ?

    Adica de ce MAX(id) din moment ce este index pe id?

    Si varchar este poate avea maxim 255 caractere. de ce recomanzi char(255)? Spatiu risipit aiurea daca nu se folosesc toate caracterele.

    Iar functia asta ia doar id-ul random (b.id) dupa care returneaza rezultatele comparate cu acel id (afiseaza produsele cu id mai mare sau egal decat id-ul random in limita a 15. de exemplu, daca sunt 3 ce respecta conditia asta, doar 3)
    ===========================
    MAX(id) este maximul idului din tot tabelul ,nu inteleg ce treaba are index de id.


    Daca folosesti CEIL faci o comanda in plus pentru ca la WHERE a.id >= b.id idurile sunt intregi si nu e nevoie sa il rotunjesti ca tot acelasi rezultat da.

    Varchar nu are max 255 de caractere !!!! In functie de ce versiune de mysql ai.
    Toate versiunile mai mici de 5.03 aveau 255 caractere,versiunile noi pot avea max 65,535 caractere.

    diferenta dintre char si varchar e ca varchar foloseste 1 bit in plus,dar este mult mai eficient decat text cand depaseste 255 de caractere un row.


    Da, interogare respectiva returneaza campurile mai mari de b.id insa b.id este random.

    Daca ai doar 3 rowuri ai 1/3 sanse sa iti afiseze 3 rowuri pt limit 3.

    Daca stii tu o interogare mai eficienta decat asta te rog arata-ne.Orice pont e bun in baze de date.

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. Cumpar link-uri - plata foarte repede prin PayPal
    De Mihai Gianu în forumul Link-uri/Bannere
    Răspunsuri: 0
    Ultimul Post: 1st June 2009, 14:00
  2. random links
    De Mascka în forumul Discutii generale privind optimizarea si motoarele de cautare
    Răspunsuri: 0
    Ultimul Post: 22nd July 2007, 14:38
  3. Ia-l Repede Cat Mai E Pe Stoc
    De Cristian Mezei în forumul Bar, lobby...
    Răspunsuri: 8
    Ultimul Post: 26th May 2006, 09:54

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
  •