O víkendu probíhá konference OpenAlt 2025 (Stream). Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma.
Josef Průša představil novou velkoformátovou uzavřenou CoreXY 3D tiskárnu Prusa CORE One L a nový open source standard chytrých cívek OpenPrintTag i s novou přepracovanou špulkou.
Na GOG.com běží Autumn Sale. Při té příležitosti je zdarma hororová počítačová hra STASIS (ProtonDB: Platinum).
Ubuntu 25.10 má nově balíčky sestavené také pro úroveň mikroarchitektury x86-64-v3 (amd64v3).
Byla vydána verze 1.91.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Ministerstvo průmyslu a obchodu vyhlásilo druhou veřejnou soutěž v programu TWIST, který podporuje výzkum, vývoj a využití umělé inteligence v podnikání. Firmy mohou získat až 30 milionů korun na jeden projekt zaměřený na nové produkty či inovaci podnikových procesů. Návrhy projektů lze podávat od 31. října do 17. prosince 2025. Celková alokace výzvy činí 800 milionů korun.
Google v srpnu oznámil, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Iniciativa Keep Android Open se to snaží zvrátit. Podepsat lze otevřený dopis adresovaný Googlu nebo petici na Change.org.
Byla vydána nová verze 18 integrovaného vývojového prostředí (IDE) Qt Creator. S podporou Development Containers. Podrobný přehled novinek v changelogu.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 2.0. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Google Chrome 142 byl prohlášen za stabilní. Nejnovější stabilní verze 142.0.7444.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 20 bezpečnostních chyb. Za nejvážnější z nich bylo vyplaceno 50 000 dolarů. Vylepšeny byly také nástroje pro vývojáře.
sl1 sl2 1 --xDas 2 a-xas 3 --x--Udělat to pomocí LIKE trvá strašně dlouho, proto bych rád věděl, zda to jde udělat indexovaně? Je mi víceméně jedno jestli se bude hledat třeba podle sloupce typu VARCHAR či např. podle INTu, kde by se hledalo binární operací AND, ale potřebuju na to vytvořit a používat indexy. Jak na to?
CREATE TABLE foo(s text); CREATE INDEX ON foo USING GIN ((substring(s FROM 1 FOR 1)); CREATE INDEX ON foo USING GIN ((substring(s FROM 2 FOR 1)); CREATE INDEX ON foo USING GIN ((substring(s FROM 3 FOR 1)); SELECT * FROM foo WHERE substring(s FROM 3 FOR 1) = 'x';tahle podminka bude mit dost mizernou selectivitu - dost mozna ze problem je jenom v like a stacilo by nepouzivat like
SELECT * FROM foo WHERE substring(s FROM 3 FOR 1) = 'x';Jeste by slo pouzit hstore:
postgres=# create or replace function pack(text)
returns hstore as $$
SELECT string_agg(i || '=>' || substring($1 FROM i FOR 1),',')::hstore
FROM generate_series(1,length($1)) g(i); $$
LANGUAGE sql IMMUTABLE;
CREATE FUNCTION
postgres=# select pack('Pavel');
pack
--------------------------------------------------
"1"=>"P", "2"=>"a", "3"=>"v", "4"=>"e", "5"=>"l"
(1 row)
postgres=# select * from xx;
a
-------
Pavel
(1 row)
postgres=# CREATE INDEX ON xx USING GIN((pack(a)));
CREATE INDEX
postgres=# SELECT * FROM xx WHERE pack(a) @> '3=>v';
a
-------
Pavel
(1 row)
postgres=# set enable_seqscan to off;
SET
postgres=# explain SELECT * FROM xx WHERE pack(a) @> '3=>v';
QUERY PLAN
---------------------------------------------------------------------------
Bitmap Heap Scan on xx (cost=12.25..16.51 rows=1 width=32)
Recheck Cond: (pack(a) @> '"3"=>"v"'::hstore)
-> Bitmap Index Scan on xx_pack_idx (cost=0.00..12.25 rows=1 width=0)
Index Cond: (pack(a) @> '"3"=>"v"'::hstore)
(4 rows)
postgres=# SELECT * FROM xx WHERE pack(a) @> '3=>v, 4=>e';
a
-------
Pavel
(1 row)
postgres=# SELECT * FROM xx WHERE pack(a) @> '3=>v, 4=>x';
a
---
(0 rows)
Ale co bude rychlejsi netusim - hstore je hodne genericky, takze pokud by tam byla nizka selectivita, tak by to nemuselo byt efektivni
Souhlas... a nebo jít cestou oindexování volání funkce - viz CREATE INDEX, je tam příklad na vytvoření indexu nad lower()
Tak spojeni velkych tabulek muze byt vypocetne velice narocne, to neni zadny mytus, zalezi na konkretni situaci.Je to mýtus. Spojení velkých tabulek nic nestojí. Nákladné je vyhledávání. Zkuste si to. Udělejte si SELECT na spojení tabulek, a pak soustavu SELECTů, která vybere ta samá data bez spojení v databázi (spojení uděláte v aplikaci). To druhé bude pomalejší – hledání použije stejné indexy, ale v druhém případě bude víc režie se spojením, parsováním dotazů apod.
SELECT A.* FROM table1 A JOIN table2 B ON (A.id = B.a_id) WHERE A.id = 1 SELECT A.* FROM table1 A WHERE A.id = 1
)…
Tiskni
Sdílej: