Portál AbcLinuxu, 12. května 2025 19:20
Řešení dotazu:
INSERT INTO tab2 (pole1, pole2) SELECT aa1, aa2 FROM tab1 ORDER BY datum DESC LIMIT 3O;Kopírování do pole nedoporučuji, zbytečně by to prodloužilo dobu zpracování.
...řádky v tabulce projet, 30 z nich vybrat a ty uložit do jiné tabulky...Samozřejmě čím víc normalizačních pravidel ta první tabulka porušuje, tím bude SQL dotaz složitější.
mysql dbname <<EOF INSERT INTO table2 (hodnota1_max) SELECT max(hodnota1) FROM table1 WHERE … ; INSERT INTO table2 (hodnota2_max) SELECT max(hodnota2) FROM table1 WHERE … ; … EOFNapises do shellskriptu, pustis z cronu. php netreba. sql nema pole ve smyslu php, ale to neznamena ze neumi pracovat s mnozinami hodnot. Pokud to pujde, drz se holeho sql, byt je to syntakticky obcas dost pres ruku. Vetsina slozitejsich veci by sla napsat v shellu, coz bude z hlediska cronu porad jeste "nativni" a snaze laditelne. Na opravdu komplikovane ulohy se obvykle pouziva perl, python, ruby nebo nejaky jiny univerzalni skriptovaci jazyk. Phpcko ne, to je jazyk na delani webu a vsude jinde spis prekazi. C/C++ taky ne, to je na zasadni veci kde potrebujes maximalni vykon a pocitas kazdou mikrosekundu.
… Měl bych ještě jednu otázku: Jsou databáze uloženy jen na disku a tedy každý přístup do ní znamená činnost disku? Jestli ano, co takhle zrcadlení do RAM pro čtení databáze?Nevrtej do toho. Databaze maji spoustu vlastnich vyrovnavacich pameti, system take, a narozdil od tebe pri jejich pouzivani dbaji na transakcni izolaci a konzistenci dat. Jestli mas problem s vykonem a prebytky pameti, tak polad velikost buffer poolu a query cache.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.