Article View: pl.comp.lang.delphi.bazy-danych
Article #82906Re: Co wybrac - Identity czy sekwencje
From: wloochacz
Date: Thu, 01 Mar 2018 11:23
Date: Thu, 01 Mar 2018 11:23
61 lines
4615 bytes
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-mailReferences:
<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