Hirdetés

Keresés

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

  • Taci

    addikt

    válasz Taci #5057 üzenetére

    (Mivel egyelőre még nem tudom kipróbálni a megoldást, így csak agyban tudok a témán "dolgozni", és az jutott eszembe, hogy) mi lenne, ha a ~30 kategóriának csinálnék egyszerűen mezőket a jelenlegi táblában? Lenne category1, category2 stb. nevű mező, értékként 0, ha a rekordhoz nem tartozik, 1, ha igen.
    Így nem kellene LIKE-ot sem használni már, az eredeti lekérdezés
    SELECT * FROM table
    WHERE channel_id
    IN ('id1','id2','id3','id4')
    AND
    (category LIKE '%category1%'
    OR category LIKE '%category2%'
    OR category LIKE '%category3%'
    OR category LIKE '%category4%'
    OR category LIKE '%category5%'
    OR category LIKE '%category6%')
    AND
    (category NOT LIKE '%category7%'
    AND category NOT LIKE '%category8%'
    AND category NOT LIKE '%category9%')
    ORDER BY date DESC LIMIT 4

    nézhetne ki így is:
    SELECT * FROM table
    WHERE channel_id
    IN ('id1','id2','id3','id4')
    AND
    (category7 = 0
    AND category8 = 0
    AND category9 = 0)
    ORDER BY date DESC LIMIT 4

    (Mert most látom csak, hogy feleslegesen szűrtem arra is, hogy milyen kategóriákat listázzon, ha egyszer már ott van az is, hogy miket NE, és csak 2 állása van (vagy benne van, vagy nincs)).

    Ez lenne olyan hatékony, mint a 3 táblás JOIN-olás? Vagy még hatékonyabb, esetleg kevésbé?
    (Most kíváncsi lennék, az EXPLAIN erre mit mondana.)

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