Mysql SUBSTR -es where egyedi kulcsra
2011-04-12T10:51:45+02:00
2011-04-12T18:45:10+02:00
2022-07-24T16:36:20+02:00
  • Az a forma range scan-t használ, már ha tud, ami lassabb, mint a direct keresés.
    Mutasd a teljes hozzászólást!
  • Kipróbálhatnád hurka ajánlatát is, mert a
    LIKE '123456789__'
    forma szokott indexet használni.
    Mutasd a teljes hozzászólást!
  • Próbáld ki előbb, hogy csak az első 9 karakterre hozol létre indexet. Ha elsőre nem veszi be a mysql, akkor még próbáld ki a force index-szel a lekérdezést.
    Mutasd a teljes hozzászólást!
  • Igen. Megnéztem explain-nel. Nem használ indexet, ami logikus is. Azt fogom tenni, amit mondtál. Csinálok egy mezőt, ami 9 hosszú, és azt indexelem. Köszönöm.
    Mutasd a teljes hozzászólást!
  • Szerintem ez a kifejezés alapból nincs indexelve, tehát nem indexek alapján fogja megállapítani a lekérdezett/törlendő rekordokat a mysql, hanem magában a file-ban fog keresni. Hogy igazam van-e, arról legegyszerűbben egy explain select-tel tudsz meggyőződni: ha nem használ kulcsot, akkor bingó, meg van a hiba oka.

    Ha tényleg ez a gond, akkor szvsz két dolgot lehet tenni:
    1. hozz létre az adott szöveges mező olyan kulcsot, ami csak az 1-9 karaktereket indexeli.
    2. Hozz létre plusz egy oszlopot a táblában, ami csak az 1-9 karaktert tartalmazza és indexelt azt teljesen.
    Mutasd a teljes hozzászólást!
  • Nem tudom, lesz-e különbség, vagy lassabb lesz-e, de mi van, ha LIKE-al próbálkozol SUBSTR helyett?
    LF LIKE '123456789__' (vagy ilyesmi)

    SZERK VAGY: LF LIKE '123456789%'
    Mutasd a teljes hozzászólást!
  • Van egy táblám, amiben az egyedi kulcs 11 hosszú varchar(); Egy lekérdezést kell rá csinálnom, de a lekérdezésben a where feltételnél megadott adat, amire szűrni szeretnék, csak 9 hosszú. Ezért substring-et használok, úgy, hogy

    WHERE (SUBSTR(LF,1,9)='123456789')

    Okozhat ez drasztikus lassulást? Nézegettem a slow query log-ot, és bizony van, hogy egy ilyen 10 másodpercig is fut. Pontosabban ezek nem select utasítások, hanem update-ek, abból viszont 5 a fentihez teljesen hasonló, csak más paraméterekkel.
    Mindezek egy tárolt eljárásban vannak.
    Mutasd a teljes hozzászólást!
abcd