xom`s pinion - Tom Hnatovsky Blog
Dlohotrvající OFFSET v PostgreSQL
Nedávno jsem řešil problém s pomalým vykonáváním dotazů
v PgSQL databázi při použití klauzule OFFSET. Pokud pustíte select s několika
joiny nad tabulkou s deseti tisíci záznamy a ještě z něj chcete data
dostávat postupně (pomocí limitu a offsetu) – například v případě stránkování,
tak se pěkně načekáte.
Problém spočívá v tom, že Postgre aplikuje limit a offset nad celou výstupní tabulkou a to mu něco potrvá.
Problematický zápis
SELECT
a.*, b.neco, c.neco
FROM
tabulka a
LEFT JOIN
dalsi_tabulka b ON b.id_a = a.id
LEFT JOIN
extra_tabulka c ON c.id_a = a.id
LIMIT 100
OFFSET 90000
Celý nastíněný problém lze vyřešit dalším joinem – takovým, který poběží pouze nad sloupečkem id hlavní tabulky.
SELECT
a.*, b.neco, c.neco
FROM
(SELECT id FROM tabulka LIMIT 100 OFFSET 90000) AS pomocna_tabulka
JOIN
tabulka a
LEFT JOIN
dalsi_tabulka b ON b.id_a = a.id
LEFT JOIN
extra_tabulka c ON c.id_a = a.id
Časová úspora je u opravdu velkých tabulek neuvěřitelná.
Windows XAMPP - Aktualizace PHP
Při vývoji PHP ve Windows používám XAMPP (jednoduše obsahuje všechno potřebné k běhu PHP aplikací bez zdlouhavého nastavování různých konfiguračních souborů).
Pokud používáte defaultní nastavení Apache a PHP, tak je aktualizace verze PHP nejjednodušší pomocí updatu celého XAMPP (stáhnete si nejnovější vydání a přeinstalujete).
Pokud ale používáte některé addony či speciální konfiguraci Apache či PHP, tak můžete čelit riziku, že při aktualizaci celého XAMPP a následnému dohrání starých konfiguračních souborů vám nebude server fungovat. Pokud se bojíte při aktualizaci PHP přehrát i Apache či MySQL (součástí balíku XAMPP), tak můžete jednoduše zaktualizovat PHP pomocí těch pár kroků:
- Zazálohujte si vaši současnou verzi XAMPP
- Stáhněte si ZIP balíček PHP pro Windows
- Zastavte Apache server (bez toho vám nepůjdou některé knihovny přepsat)
- Zkopírujte obsah ZIP balíčku do php adresáře, který je umístěn v xampp adresáři (defaultně c:/xampp)
- V adresáři apache/bin (umístěný v xampp adresáři) přepište existující soubory ze ZIP balíčku (=pokud existuje soubor v ZIPu i v adresáři, tak jej přepište)
- Spusťte Apache
Upozornění! Využití tohoto návodu je na vlastní nebezpečí a měli by dle něj postupovat pouze lidé, kteří alespoň trochu tuší, co dělají :) Před jakoukoliv změnou si zálohujte data!
Barevné schéma notifikací

Různé projekty na různých platformách mají jedno společné - notifikace akcí, které by měly být v barvách, které je člověk zvyklý vnímat kolem sebe. Lidé si již vžili, že zelená znamená dobré zprávy, červená ty zlé, žlutá či oranžová upozorňuje a modrá informuje.
Obrázek v tomto článku obsahuje notifikace v barvách, které jednotně používám na mých projektech. Toto barevné schéma se mi osvědčilo:
Pozadí | #e9f9e5 | |
---|---|---|
Rámeček | #b4e8aa | |
Písmo | #318f14 |
Pozadí | #f9f9e5 | |
---|---|---|
Rámeček | #e8e3aa | |
Písmo | #d9ad12 |
Pozadí | #e5ecf9 | |
---|---|---|
Rámeček | #aac6e8 | |
Písmo | #00499c |
Pozadí | #f9e5e6 | |
---|---|---|
Rámeček | #e8aaad | |
Písmo | #d23e17 |