Autor Zpráva
Uriah
Profil *
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
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 *
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
Clovece tak to Ti neporadim. IMHO se musi psat select vzdy novy.
Honza Hučín
Profil
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
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ě.
Toto téma je uzamčeno. Odpověď nelze zaslat.