abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
včera 22:00 | Nasazení Linuxu
Stabilní aktualizace Chrome OS 69 (resp. Chromium OS), konkrétně 69.0.3497.95, přináší mj. podporu linuxových aplikací. Implementována je pomocí virtualizace, a proto je tato funkce také omezena na zařízení s dostatkem paměti a podporou hardwarové akcelerace, tudíž nejsou podporovány chromebooky s 32bitovými architekturami ARM, či Intel Bay Trail (tzn. bez Intel VT-x).
Fluttershy, yay! | Komentářů: 0
včera 21:32 | Zajímavý projekt
Došlo k uvolnění linuxové distribuce CLIP OS, vyvíjené francouzským úřadem pro kybernetickou bezpečnost ANSSI, jako open source. Vznikla za účelem nasazení v úřadech, kde je potřeba omezit přístup k důvěrným datům. Je založená na Gentoo.
Fluttershy, yay! | Komentářů: 0
včera 16:00 | Komerce

Zjistěte více o bezpečné a flexibilní architektuře v cloudu! IBM Cloud poskytuje bezpečné úložiště pro Vaše obchodní data s možností škálovatelnosti a flexibilitou ukládání dat. Zároveň nabízí prostředky pro jejich analýzu, vizualizaci, reporting a podporu rozhodování.

… více »
Fluttershy, yay! | Komentářů: 12
včera 12:22 | Nová verze

V dubnu letošního roku Mozilla představila webový prohlížeč pro rozšířenou a virtuální realitu Firefox Reality (GitHub). V úterý oznámila vydání verze 1.0. Ukázka na YouTube. Firefox Reality je k dispozici pro Viveport, Oculus a Daydream.

Ladislav Hagara | Komentářů: 2
včera 12:00 | Komunita

V srpnu loňského roku společnost Oracle oznámila, že Java EE (Enterprise Edition) bude uvolněna jako open source. O měsíc později bylo rozhodnuto, že tato open source Java EE bude přejmenována a předána Eclipse Foundation. Nové jméno bylo oznámeno v únoru letošního roku. Z Java EE se stala Jakarta EE. Eclipse Foundation včera oznámila dosažení dalšího milníku. Zdrojové kódy aplikačního serveru GlassFish jsou již k dispozici v git repozitářích Eclipse Foundation (GitHub).

Ladislav Hagara | Komentářů: 0
19.9. 23:55 | Komunita

LTS (Long Term Support) podpora Ubuntu 12.04 LTS (Precise Pangolin) skončila po 5 letech od jeho vydání, tj. v dubnu 2017. V březnu 2017 ale Canonical představil placenou ESM (Extended Security Maintenance) podporu, díky které je Ubuntu 12.04 podporováno do dubna 2020. Dnes Canonical potvrdil ESM podporu také pro Ubuntu 14.04 LTS (Trusty Tahr), jehož LTS podpora skončí v dubnu 2019.

Ladislav Hagara | Komentářů: 0
19.9. 15:00 | Nová verze

Byla vydána verze 3.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí HTML, CSS a JavaScriptu Electron (YouTube, GitHub). Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

Ladislav Hagara | Komentářů: 0
19.9. 14:44 | Nová verze

Po půl roce vývoje od vydání verze 6.0.0 byla vydána verze 7.0.0 překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, clang-tools-extra a LLD.

Ladislav Hagara | Komentářů: 0
19.9. 13:44 | Nová verze

Byla vydána verze 3.0.0 knihovny pro vykreslování grafů v programovacím jazyce Python Matplotlib (Wikipedie, GitHub). Přehled novinek a galerie grafů na stránkách projektu. Zrušena byla podpora Pythonu 2.

Ladislav Hagara | Komentářů: 0
19.9. 00:22 | Komunita

V Norimberku probíhá do pátku ownCloud conference 2018, tj. konference vývojářů a uživatelů open source systému ownCloud (Wikipedie) umožňujícího provoz vlastního cloudového úložiště. Přednášky lze sledovat online. Videozáznamy jsou k dispozici na YouTube. Při této příležitosti byl vydán ownCloud Server 10.0.10. Z novinek lze zdůraznit podporu PHP 7.2. Vydán byl také ownCloud Desktop Client 2.5.0. Vyzkoušet lze online demo ownCloudu.

Ladislav Hagara | Komentářů: 1
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (15%)
 (20%)
 (23%)
 (25%)
 (4%)
 (1%)
Celkem 376 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Dotaz: sqlite - ako je lepšie použiť indexy

4.3.2017 18:11 adrinko | skóre: 22
sqlite - ako je lepšie použiť indexy
Přečteno: 925×
Dobrý deň,

mám tabuľku 'data' so stĺpcami id (auto_increment) id_device (integer) timestamp(numeric).

Volám pre ňu tieto dva selekty:
select * from data where id<10000000 and id_device=345
alebo
select * from data where id<10000000 and id_device=345 and timestamp>'2017-01-01 10:00:00' and timestamp<'2017-03-01 08:00:00'
Ako je prosím najefektívnejšie nadefinovať indexy?
CREATE INDEX idx1 ON data(id, id_device);
alebo sólo index pre id (už je autoincrement), sólo pre id_device, sólo pre timestamp? Alebo ich rovno skombinovať ako INDEX idx2 ON data (id, id_device, timestamp)?

Vďaka vopred za poradenie, v indexoch nie som doma...

Řešení dotazu:


Odpovědi

4.3.2017 21:05 jekub
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
Nějak mi nedává smysl zahrnutí id(auto) do podmínky. Nastavil bych index (id_dev,time). Stačí ale vyzkoušet - explain. Index ovlivňuje nejen select, ale i další příkazy. Např. masivní inserty, např. import rozsáhlého souboru dat.
5.3.2017 10:15 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
"id" tam mám preto, lebo niekedy chcem len niektoré vybrať podľa preferencie, teda ci su pod/nad určitú hodnotu toho "id"
5.3.2017 10:23 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
pardón, nie niekedy, ale to id pre istotu používam vždy, lebo systém nemusím mať vždy aktuálny timestamp, lebo ten systém s takouto databázou nemá real-time clock modul a nemusí byť vždy pripojený na internet (to je hlavne pre ten prípad, kde nepoužívam v selekte timestamp).
5.3.2017 12:00 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
Ďakujem pekne. Zase som sa niečo nové naučil (skúšam ten EXPLAIN a rôzne kombinácie indexov) :)
4.3.2017 21:26 Kit | skóre: 42 | Brno
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
Asi bych použil
CREATE INDEX idx1 ON data(id_device, timestamp);
protože tyto dva sloupce hrají při selectu zásadní roli.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
5.3.2017 10:45 chrono
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
A v tomto poradí preto, lebo tie stĺpce sa používajú postupne zľava. Teda, ak sa nerozhodne už pri prvom stĺpci, použije sa druhý... (a keďže sa id_device porovnáva na identitu, ďalšie prípadné porovnávanie timestamp bude obsahovať oveľa menej možných riadkov)
5.3.2017 11:59 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
Ďakujem pekne. Zase som sa niečo nové naučil (skúšam ten EXPLAIN a rôzne kombinácie indexov) :)
5.3.2017 20:51 Filip Jirsák | skóre: 67 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
Když nevíme, jak vypadá rozložení dat, těžko radit. Indexy se nastavují tak, abyste na základě indexu vybral co nejmenší množinu dat. U prvního příkladu je tedy důležité, která z těch dvou podmínek vybere menší množství záznamů. Předpokládám, že to bude id_device – pak vytvořte index z dvojice (id_device, id). Pokud má smysl přidávat tam index i pro ten druhý dotaz, přidejte timestamp na jeho konec. Pro první dotaz se pak použije jenom začátek indexu, pro druhý celý index (id_device, id, timestamp).
alebo sólo index pre id (už je autoincrement), sólo pre id_device, sólo pre timestamp?
To určitě ne. Použil by se jen jeden index s největší selektivností a ty zbývající dva by byly k ničemu. Více indexů najednou by se použilo jen ve velmi specifických případech – pokud se vyplatí vybrat seznam záznamů podle jednoho indexu, vybrat seznam záznamů podle druhého indexu a pak najít společné prvky obou seznamů.
7.3.2017 17:10 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
ďakujem pekne. S EXPLAIN testujem rôzne kombinácie indexov. Napr. pre ten select s timestamp si ako najvhodnejší sqlite vybrala index INDEX id_device, timestamp, id

data su:
id	        integer Auto Increment
id_device	integer [0]
timestamp	numeric NULL
7.3.2017 20:47 Filip Jirsák | skóre: 67 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
S tím, co vám napíše explain, je potřeba zacházet opatrně. V rámci jednoho explain by měl poměr hodnot odpovídat (tj. zjistíte, co je na daném dotazu nejproblematičtější), ale porovnávat hodnoty z různých příkazů už je ošemetné, protože to mohou být úplně nesouměřitelná čísla. Taky myslete na to, že údržba indexů není zadarmo, tj. při každém insertu, updatu a deletu je nutné příslušným způsobem upravit i indexy. Ve vašem případě je asi to omezení času selektivnější, než omezení na id, což se snadno může změnit, pokud budete hledat větší rozpětí času. Navíc uvedený index vám moc nepomůže k tomu prvnímu selectu – půjde podle něj jen vybrat všechny záznamy s daným id_device, ale dál už je bude nutné projít všechny.
8.3.2017 11:10 EtDirloth | skóre: 7
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
Este doplnim, ze je potrebne testovat s aktualnymi statistikami. Tie je mozne aktualizovat (napr. po importe dat) spustenim prikazu ANALYZE;

Pri vybere vhodneho indexu pre sadu dotazov vzdy zalezi na reduktivnosti pouzivanych podmienok a tie najreduktivnejsie preferovat (o to sa tiez snazi planner). To vzdy zalezi na povahe dat v tabulke (ako uz bolo spomenute) a na konstantach pouzivanych v podmienkach, preto treba poznat data aj dotazy. Teda ak je typicky pouzivana podmienka id<1000000 a takych zaznamov je milion, tak id netreba indexovat, pretoze vhodnejsie je spravit full table scan.
  • Ak ale taku podmienku doplnime o id_device=$konstanta, pricom vies, ze pre lubovolnu konstantu ich bude povedzme stovky, tak je to dobry kandidat na index.
  • Moze sa tiez stat, ze uzivatelom zadavany rozsah timestampov je aplikacne obmedezny na tri mesiace a ty vies, ze za tri mesiace su typicky iba desiatky zaznamov. Vtedy treba preferovat timestamp - resp. v tvojom pripade dva samostatne indexy namiesto spominaneho (id_device,timestamp).
8.3.2017 15:50 adrinko | skóre: 22
Rozbalit Rozbalit vše Re: sqlite - ako je lepšie použiť indexy
Vďaka za odpovede páni!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.