ďťż
 
[PGSQL] null a '' w bazie ďťż
 
[PGSQL] null a '' w bazie
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[PGSQL] null a '' w bazie



Łukasz - 13-11-2006 00:45
[PGSQL] null a '' w bazie
  Witam,

Czy ze swojego doświadczenia możecie powiedzieć, co jest bardziej efektywne
ze względu na szybkość działania, przechowywanie w bazie pustych stringów
jako '' czy jako null?
z nullem byłyby problemy w przypadku indeksów i uporządkowań (ze względu na
to że null nie może wyświetlać się na końcu, musiałbym wykorzystywać
coalesce()), natomiast nie wiem jak wpłynie zapisanie wartości '' w polu
typu varchar - mają one storage EXTERNAL, gdyby były zapisywane 'na
zewnątrz', to spowolniło by to operacje odczytu i oczywiście byłoby
argumentem za nullem, z drugiej strony obawiam się spowolnienia wyszukiwania
po indeksie zbudowanym na coalesce() (z mojego doświadczenia z postgresem
wynika że ma on problemy z indeksami na złożonych funkcjach)

Pozdrawiam,
Łukasz





Artur Muszynski - 13-11-2006 00:45

  Łukasz wrote:
> Czy ze swojego doświadczenia możecie powiedzieć, co jest bardziej
> efektywne ze względu na szybkość działania, przechowywanie w bazie
> pustych stringów jako '' czy jako null?

W teorii: Pustych stringów. NULL to dodatkowy bajt dla pola, więc siłą
rzeczy powinno być wolniej. Jak to jest w praktyce nie sprawdzałem. Dla mnie
ważniejsza jest logiczna sensowność, a nie wątpliwa optymalizacja.

> z drugiej strony obawiam się
> spowolnienia wyszukiwania po indeksie zbudowanym na coalesce() (z
> mojego doświadczenia z postgresem wynika że ma on problemy z
> indeksami na złożonych funkcjach)

Nie rozumiem. "Na prostych" funkcjach nie ma problemu, a "na złożonych"
jest? Czy coalesce jest funkcją złożoną? Pewnie w ogóle nie założyłeś
indeksu funkcyjnego.

artur

> Pozdrawiam,
> Łukasz




Michal Jankowski - 13-11-2006 00:45

  "Artur Muszynski" <arturm@union.wytnijto.com.pl> writes:

> Łukasz wrote:
>> Czy ze swojego doświadczenia możecie powiedzieć, co jest bardziej
>> efektywne ze względu na szybkość działania, przechowywanie w bazie
>> pustych stringów jako '' czy jako null?
>
> W teorii: Pustych stringów. NULL to dodatkowy bajt dla pola, więc siłą

Hę? Jaki dodatkowy bajt?

A w ogóle to zależy, czy w rzędzie są inne nulle, czy nie. I ile jest
kolumn.

MJ




Łukasz - 13-11-2006 00:45

 
Użytkownik "Artur Muszynski" <arturm@union.wytnijto.com.pl> napisał w
wiadomości news:ehq7bi$vjm$1@mx1.internetia.pl...
>
> W teorii: Pustych stringów. NULL to dodatkowy bajt dla pola, więc siłą
> rzeczy powinno być wolniej. Jak to jest w praktyce nie sprawdzałem. Dla
> mnie ważniejsza jest logiczna sensowność, a nie wątpliwa optymalizacja.
>

Tak, ale storage external oznacza w praktyce wskaźnik, czyli musimy zaczytać
dodatkową stronę z dysku?
Czy jest to bardziej inteligentnie zrobione?





Michał Zaborowski - 13-11-2006 00:45

  Dnia 2006-10-26 12:17, Użytkownik Łukasz napisał :

> Witam,
>
> Czy ze swojego doświadczenia możecie powiedzieć, co jest bardziej efektywne
> ze względu na szybkość działania, przechowywanie w bazie pustych stringów
> jako '' czy jako null?
>
AFAIR w 7.2 robiło to różnicę - teraz nie.
http://www.postgresql.org/docs/8.1/s...ge-layout.html
CTRL-F + 'null bitmap', albo w FF / + 'null bitmap'

--
Pozdrawiam,
Michał Zaborowski (TeXXaS)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?= [sql][pgsql] zapytanie sql [pgsql] Wykonanie triggera po =?ISO-8859-2?Q?zako=F1czeniu_tra?==?ISO-8859-2?Q?nsakcji?= [pgsql] =?ISO-8859-2?Q?Prawid=B3owe_post=EApowanie_w_przyp?==?ISO-8859-2?Q?adku_awarii?= [PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?= [pgsql] 7.4 =?ISO-8859-2?Q?og=B3upia=B3_przy_zak=B3adaniu_?==?ISO-8859-2?Q?indeksu?= [pgsql] Zmiana schematu do =?ISO-8859-2?Q?kt=F3rego_nalezy_o?==?ISO-8859-2?Q?biekt=2E?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= Która z baz: [PGSQL] czy [MySQL] będzie lepsza w takim zastosowaniu (masowe UPDATE)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kfia-tek.keep.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com