Názor k článku Markus Winand: SQL Performance Explained od Pavel Stěhule - SQL bylo navrženo pro ruční zadávání, takže výrobci...

  • Článek je starý, nové názory již nelze přidávat.
  • 8. 7. 2013 18:58

    Pavel Stěhule

    SQL bylo navrženo pro ruční zadávání, takže výrobci předpokládali, že uživatelé budou chtít zadávat a číst datumové typy dle svých národních zvyklostí - a s radostí jim to umožnili, a uživatelé to začali chtít. Navíc, v běžných programovacích jazycích chyběla jakákoliv podpora pro typ date, pro regulární výrazy, .. takže parsování stringů a operace s datumy na straně klienta byly dost obtížné, a bylo příjemné, když to db udělala za vás. Dost pozdě jim došlo, že to nebyl dobrý nápad, nicméně z důvodů zpětné kompatibility to už nešlo změnit. Když se podíváte do kódu Postgresu pro typ date, tak objevíte dost komplikovaný kód, kterého by se všichni rádi zbavili a podporovali jenom ANSI formát - 'YYYY-MM-DD', ale to nejde.

    Jinak způsob zápisu datumu jako celého čísla není šikovný. Totiž hrozí možná záměna s integrem - jednak hrozí riziko chyb typu

    WHERE sales_date = 1970-01-01

    což je samosebou něco jiného, než programátor očekával - a třeba pg nedovoluje implicitní konverzi mezi date a int.