🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82906

Re: Co wybrac - Identity czy sekwencje

#82906
From: wloochacz
Date: Thu, 01 Mar 2018 11:23
61 lines
4615 bytes
W dniu 2018-02-20 o 19:59, Krzysztof Szyszka pisze:
>> > Jeśli nałożymy indeks na tę kolumnę to szukanie będzie błyskawiczne, 
>> niezależnie od tego czy > dane w tej kolumnie będą sekwencyjne.
>> Wyszukiwanie będzie szybsze, ponieważ użyty zostanie indeks.
>> Ale nie zostanie użyte wyszukiwanie w indeksie, tylko skanowanie 
>> indeksu. Taka to drobna różnica...
>> Oczywiście to i tak lepiej niż full-scan-table, ale gorzej niż 
>> index-seek.
> 
> Tak sobie czytam te wasze rozważania i mam kilka uwag:
> 
> Dlaczego uważasz, że "nie zostanie użyte wyszukiwanie w indeksie, tylko 
> skanowanie indeksu"?
> Przecież po to zakłada się indeks na danym polu, żeby wyszukiwać po 
> indeksie, bo indeks z założenia jest zawsze sekwencyjny,
Czepiłem się właśnie wartości *niesekwencyjnych* dla indeksów, zwłaszcza 
klastrowych - czyli PK.
A takie założenie zmienia postać rzeczy, prawda?

Naprawdę nie chce mi się tłumaczyć niuansów, zwłaszcza osobom którym 
przecież działa.
No i na zdrowie.

> a głównym kosztem wyszukiwania po indeksie jest czas porównania 
> indeksowanych wartości, który zawsze będzie większy dla
> stringów, niż dla prostego INT.
Nie chodzi o wielkość danych sensu stricte, ale oczywiście to też ma 
znaczenie.

> Skoro wartości w kolumnie są sekwencyjne, to indeks założony na tej 
> kolumnie będzie powielał kolejność rekordów w tabeli.
Generalnie tak, ale niekoniecznie.
Poza tym, dlatego na samym początku pisałem o wartościach generowanych 
przez rosnącą funkcję monotoniczną - przeoczyłeś?

> Zyskiem podczas wyszukiwania jest odczyt indeksu o mniejszych 
> rozmiarach, zamiast odczytu pełnych rekordów z tabeli.
> Natomiast aktualizacja takiego indeksu po dodaniu nowych rekordów będzie 
> szybsza, bo jedynie dopisujemy kolejne wartości
> na końcu bez konieczności przebudowywania indeksu na początku, czy w 
> środku i według mnie to jest jedyny zysk ze stosowania
> sekwencyjnego PK, ale to będzie odczuwalne dopiero przy naprawdę dużych 
> tabelach.
Zakładasz wartości sekwencyjne dla indeksu.
Ja pisałem o przypadku dokładnie odwrotnym bo taki to został podniesiony 
jako super-duper rewelacja na wartości dla PK.

A to g...o prawda!

> I jeszcze jedno osobiste pytanie: dlaczego wybrałeś jako PK typ 
> rzeczywisty, a nie np. BIG INT (Int64), na którym mógłbyś
> dokonać takiego samego podziału na numer z bazy danych i numer z 
> licencji, a przy porównaniach powinien być szybszy?
Dlaczego szybszy, skoro mój typ to nie jakiś tam float, a 
stałoprzecinkowy, który jest reprezentowany jako Int64 (e.g. Currency w 
Delphi) właśnie?

A poza tym, tak  mi się zwyczajnie wydawało wygodniej.

-- 
wloochacz
Technical Details
Message-ID: <5a97e299$0$658$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <b103c4b1-8620-403a-a902-5e4ecd5fe355@googlegroups.com> <b32fab82-19c1-452a-a5c8-45943fa76db7@googlegroups.com> <5a8561ba$0$664$65785112@news.neostrada.pl> <24ef9b49-567a-44b5-acbd-44352e2701d0@googlegroups.com> <d84fb96f-7111-4b1a-b794-e856be8cca9e@googlegroups.com> <ecf4861c-5c5c-4ea8-85c6-2a9277b41a25@googlegroups.com> <97820f04-20f3-4421-a734-bb41bec12300@googlegroups.com> <5a87f6e0$0$559$65785112@news.neostrada.pl> <ca7d63b4-f772-4935-b7f8-2f6cf13405f0@googlegroups.com> <5a8afcf3$0$589$65785112@news.neostrada.pl> <11zhaiuujxyq.dlg@tyczka.com> <cba5c170-8839-4842-aca8-8ca183cb1202@googlegroups.com> <5a8c2046$0$560$65785112@news.neostrada.pl> <p6hr7c$2v2$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!peer01.am4!peer.am4.highwinds-media.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Co wybrac - Identity czy sekwencje
Newsgroups: pl.comp.lang.delphi.bazy-danych
References: <b103c4b1-8620-403a-a902-5e4ecd5fe355@googlegroups.com> <b32fab82-19c1-452a-a5c8-45943fa76db7@googlegroups.com> <5a8561ba$0$664$65785112@news.neostrada.pl> <24ef9b49-567a-44b5-acbd-44352e2701d0@googlegroups.com> <d84fb96f-7111-4b1a-b794-e856be8cca9e@googlegroups.com> <ecf4861c-5c5c-4ea8-85c6-2a9277b41a25@googlegroups.com> <97820f04-20f3-4421-a734-bb41bec12300@googlegroups.com> <5a87f6e0$0$559$65785112@news.neostrada.pl> <ca7d63b4-f772-4935-b7f8-2f6cf13405f0@googlegroups.com> <5a8afcf3$0$589$65785112@news.neostrada.pl> <11zhaiuujxyq.dlg@tyczka.com> <cba5c170-8839-4842-aca8-8ca183cb1202@googlegroups.com> <5a8c2046$0$560$65785112@news.neostrada.pl> <p6hr7c$2v2$1@node2.news.atman.pl>
From: wloochacz <wloochacz@no.spam.gmail.com>
Date: Thu, 1 Mar 2018 12:23:02 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0
MIME-Version: 1.0
In-Reply-To: <p6hr7c$2v2$1@node2.news.atman.pl>
Lines: 61
Message-ID: <5a97e299$0$658$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.23.136.115
X-Trace: 1519903385 unt-rea-a-01.news.neostrada.pl 658 83.23.136.115:51178
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Body-CRC: 1148297046
X-Received-Bytes: 4556
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit