Keresés

Új hozzászólás Aktív témák

  • Taci

    addikt

    válasz nyunyu #5080 üzenetére

    A category_id-ra szükségem van, nem szedhetem ki. (De amúgy a teszt kedvéért kivettem, és semmi sem változott, se a sebesség, se a distinct nem hozta a kívánt eredményt.)

    Annyit találtam, hogy ha használom a GROUP BY-t is, akkor a megfelelő eredményeket kapom, és valamelyest gyorsul a lekérdezés is. (És DISTINCT-tel vagy anélkül is ugyanazt a (jó) eredményt adja, szóval így a DISTINCT talán nem is kell.)

    select p.*
    from product p
    join product_category pc1
      on pc1.product_id = p.id
    join category c1
      on c1.id = pc1.category_id
    where c1.name in ('sárga', 'piros', 'kék')
    group by p.id
    order by p.date desc;

    Így a korábbi ~20 mp helyett már megvan ~9 mp alatt.

    És az explain-je is sokkal jobban néz ki:

    De a 9 mp még mindig szörnyű.

    Merre tovább?
    Vagy ez nem is a jó út?
    Az adatbázis szerkezete a hibás?
    Vagy a lekérdezés?

    Jelenleg nyitott vagyok a teljes adatbázisszerkezet átalakítására is. Egyszer már megcsináltam a javaslatotokra, megcsinálom megint, ha kell. Csak működjön végre.

    Mindenesetre keresgélek még, hátha találok ilyen hasznos dolgot, mint a group by. Bár néztem már annyi mindent, millió stackoverflow-bejegyzést...

Új hozzászólás Aktív témák