Autor | Zpráva | ||
---|---|---|---|
Uriah Profil * |
#1 · Zasláno: 6. 12. 2004, 19:06:16
Zdravim,
mam nasledujici problem: v jednom PHP skriptu mam hodne prikazu SELECT do jedne tabulky (asi 10). Jelikoz se jedna o velkou databazi, rychlost zpracovani celeho skriptu je mala. Vsechny selecty maji splecne vlastnosti: vybiraji z jedne tabulky a vybiraji vzdy podle hodnot ve trech sloupcich..(Napr. SELECT id FROM table WHERE idk=1 AND idd=2 AND neco=1) Takze se lisi jenom pridanim dalsich omezujicich podminek vybirani. Neslo by nejak udelat v MySQL, abych na zacatku skriptu jednou provedl SELECT id FROM table WHERE idk=1 AND idd=2 a neco=1 (tedy to co je spolecne pro vsechny selecty ve skriptu) a pak pracoval uz jenom s tim vysldkem tohoto selectu..?? Doufam ze jsem se vyjadril srozumintelne. Jiri Novak. |
||
Michalek Profil |
#2 · Zasláno: 6. 12. 2004, 19:09:28 · Upravil/a: Michalek
nejdriv to vyberes pomoci toho jak pises
$data=mysql_query(...); a pak mysql_result($data,0,"id") - kde 0 je cislo toho radku, ktery chces... Nekdo zasvata ten nazor, ze lepsi je pouzivat mysql_fetch_array, hlavne z duvodu rychlosti a zatizeni, tak at se o tom nekdo rozepise. Ja jsem nepochopil, jak to funguje. Snad jsem to napsal srozumitelne :-) |
||
Uriah Profil * |
#3 · Zasláno: 6. 12. 2004, 19:22:55
jj..srozumitelne to je, ale muj problem je jeste trochu jiny.
Napr, kdyz vyberu 1000 zaznamu, ktere odpovidaji tomu prvnimu SELECTu...tak z nich chci jeste vybrat zaznamy, ktere obsahuji urcitou dalsi podminku (napr. ..WHERE n<10),..proste abych nemusle psat pokazde cely novy SELECT..ale dal mohl zpracovat ten prvni. Nevim jestli vubec neco takoveho jde v MySQL udelat... |
||
Michalek Profil |
#4 · Zasláno: 6. 12. 2004, 19:31:34
Clovece tak to Ti neporadim. IMHO se musi psat select vzdy novy.
|
||
Honza Hučín Profil |
#5 · Zasláno: 7. 12. 2004, 08:16:18
Na začátku skriptu bych si vytvořil dočasnou tabulku (temporary table), viz http://dev.mysql.com/doc/mysql/en/CREATE_TABLE.html
Do té tabulky bych nasypal jedním selectem výběr podle společných podmínek (pomocí INSERT... SELECT, viz http://dev.mysql.com/doc/mysql/en/INSERT_SELECT.html). A s tou tabulkou bych pak pracoval zbytek skriptu. Po ukončení spojení se tabulka automaticky zruší. Zvážil bych i to, jestli by předvybraná tabulka nemohla být v databázi permanentně. |
||
Pachollini Profil |
#6 · Zasláno: 8. 12. 2004, 13:11:59
Je to možná trošku mimo, ale máš na všech těch sloupcích, které testuješ indexy? Pokud ne, jenom přidání indexů může zrychlit tento typ vyhledávání i několikanásobně.
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0