Autor | Zpráva | ||
---|---|---|---|
Taps Profil |
#1 · Zasláno: 25. 10. 2007, 13:42:35 · Upravil/a: Taps
Chtěl jsem se zeptat jak bych mohl udělat lépe dotaz na databázi :
$sql=mysql_query("select * from tabulka where id='$id' and typ='$typ' and kategorie='$kategory' and datum='$od' between datum='$do'"); Existuje nějaká jednodušší nebo rychlejší možnost než abych vkládal pořád jen and. Díky |
||
djlj Profil |
#2 · Zasláno: 25. 10. 2007, 13:45:28
No tak když chceš vybírat data na základě víc podmínek, tak je logické, že tam budeš mít víc podmínek. Pokud ti to tak vadí, tak můžeš použít CONCAT.
|
||
Loyza Profil * |
#3 · Zasláno: 25. 10. 2007, 14:14:03
Já bych k tomu snad jen dodal: Jsi si jistý, že tam potřebuješ mít tu * Skutečně potřebuješ tahat komplet všechno? No dobrá, možná dneska potřebuješ, ale co když do té tabulky zítra přidáš další sloupce, budou v tomto skriptu také potřeba? Myslím si, že hvězdička na tomto místě není vhodná
|
||
DFly Profil |
#4 · Zasláno: 25. 10. 2007, 14:22:57
Taps hele takove dve drobnosti okolo where id='$id'
ve vetsine pripadu je id unikatni (coz tedy asi v tvem pripade nebude) a je to id u tebe ciselny sloupec nebo string pri pouziti SELECT ... WHERE id='$id' pokud je id ciselny sloupec se string automaticky prevede na cislo, ale POZOR uz se nebude brat v potaz index tohoto sloupce, takze mozna zbytecne prijdes o vykon - to se ale da testnout a uvidis |
||
DFly Profil |
#5 · Zasláno: 25. 10. 2007, 14:26:14
a samozrejme jak popsali lidi vyse - zhodnotit zda je hvezdicka nutna a kdyz ne, tak vsude kde to jde pouzit CONCAT
|
||
djlj Profil |
#6 · Zasláno: 25. 10. 2007, 14:43:58
vsude kde to jde pouzit CONCAT
Ono to něčemu pomůže? Jinak bych ještě samozřejmě udělal index na sloupce id, typ, kategotrie a datum. |
||
DFly Profil |
#7 · Zasláno: 26. 10. 2007, 14:44:23
djlj no, SQLku ne, ale pro dalsi praci se scriptem je to vhodne, nemusej se zbytecne spojovat retezce, a bez zasahu do scriptu se s tim da pracovat - napr Jmeno Prijmeni, se jen rozsiri Jmeno 'prezdivka' Prijmeni
osobne se snazim z dotazu dostat toho co nejvice, aby se to nemuselo dale resit ve scriptu. |
||
Kajman_ Profil * |
#8 · Zasláno: 26. 10. 2007, 15:39:02
DFly
ale POZOR uz se nebude brat v potaz index tohoto sloupce Jste si jistý? Moje verze mysql vesele použije index i když je číselné id v uvozovkách nebo ne. |
||
DFly Profil |
#9 · Zasláno: 27. 10. 2007, 00:33:40
Kajman_ koukni se na te dotaz pres explain
jo a jakou mas verzi - mozna nejaka nova uz je bez "problemmu" |
||
djlj Profil |
#10 · Zasláno: 27. 10. 2007, 01:16:56
DFly
Moje verze MySQL 5.032 a i předchozí 4.1 index bez problému použila. To, cos popsal, se týká jiných databází, mysql ne. Zkus spustit REPAIR tabulka, možná to tvůj problém vyřeší ;). pro dalsi praci se scriptem je to vhodne, nemusej se zbytecne spojovat retezce To, co popisuješ, je opravdu vhodné snad jen u jména s příjmením a některých dalších podobných případů, kterých je však pomálu. |
||
Kajman_ Profil * |
#11 · Zasláno: 27. 10. 2007, 11:08:42
koukni se na te dotaz pres explain
Však to jsem dělal, proto jsem psal, kde jste na to přišel Vy. (A i verze 4.0 index použije). |
||
DFly Profil |
Kajman_, djlj
hm, tak to byl asi problem urcite verze - nedavno jsem updatoval - a ted uz je to v pohode ...prave proto me to prekvapilo, a asi jsem nebyl sam, kdyz uz je to opraveny |
||
Časová prodleva: 17 let
|
0