[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.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?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.pldoc.pisz.plpdf.pisz.plkfia-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 |
|