Lekérdezés egyszerűsítése LIKE-al?
Üdv!
Egy lekérdezéssel kapcsolatban szeretném a véleményeteket kérni.
Van modjuk egy auto adatbázis abban szeretnék bizonyos feltételek szerint keresni.
Az auto extrái külön mezők, 1 ha van, 0 ha nincs.
pl.: ... WHERE legkondi = '1' AND eablak = '1' AND szervo = '1'
Ehelyett csinálok egy flags nevű mezőt aminek első karaktere a légkondi,
második az ablak, harmadik a szervo, stb. és szintén 1 ha van 0 ha nincs.
Akkor ha légkondi és szervó kell a lekérdezés:
WHERE flags LIKE '1_1'
VAGY kapcsolatnál ugyan kicsit fura:
WHERE flags LIKE '1__' OR flags LIKE '__1'
de ilyen ritkán fordul elő.
Saját méréseim szerint nincs különbség a lekérdezés sebességében a két módszer között, van valakinek tapasztalata?
Főleg ha több ilyen feltétel van, milyen módszert célszerű alkalmazni?
■ Egy lekérdezéssel kapcsolatban szeretném a véleményeteket kérni.
Van modjuk egy auto adatbázis abban szeretnék bizonyos feltételek szerint keresni.
Az auto extrái külön mezők, 1 ha van, 0 ha nincs.
pl.: ... WHERE legkondi = '1' AND eablak = '1' AND szervo = '1'
Ehelyett csinálok egy flags nevű mezőt aminek első karaktere a légkondi,
második az ablak, harmadik a szervo, stb. és szintén 1 ha van 0 ha nincs.
Akkor ha légkondi és szervó kell a lekérdezés:
WHERE flags LIKE '1_1'
VAGY kapcsolatnál ugyan kicsit fura:
WHERE flags LIKE '1__' OR flags LIKE '__1'
de ilyen ritkán fordul elő.
Saját méréseim szerint nincs különbség a lekérdezés sebességében a két módszer között, van valakinek tapasztalata?
Főleg ha több ilyen feltétel van, milyen módszert célszerű alkalmazni?
Egy mező egy adat
nem jó
autók
----
id
típus
stb
extrak
-----
légkondi
el_ablak
esp
stb
autok_extrak
------
autokid
extrakid
Az autok extrákban csak összerendeled a két táblát. Még az extrák táblát ki lehet egészíteni egy 'weight' tinyint mezővel, aholva az 'order by' paramétert adod meg.
Én biztos így csinálnám, egyszerübb lenne a késöbbi módosítás-törlés-felvétel is, mint folyton updatelni egy 100 mezőből álló táblát.
A Like Stringre való
De azt hiszem a te esetedben inkább elvi hiba van. Adatbázisoknál az egyik alapszabály, hogy mező nem tartalmazhat több adatot( értsd adat-struktúrát). Ilyenkor több táblára kell bontani az adott táblát.
A te esetedben például egy auto es extra tábla kellene, az extrába kerülnének a 'legkondi', 'eablak' stb. mezők. Mindegyik rekordnak lenne egy azonosítója, ami az auto-k táblába kerülne a megfelelő rekordhoz, tulajdonképpen ez kapcsolja össze a két táblát és a lekérdezéskor így kell eljárni:
megoldások