نمایه سازی راهی برای بدست آوردن یک جدول بدون هماهنگی به ترتیب است که حداکثر کارآیی پرس و جو را هنگام جستجو به حداکثر می رساند.
هنگامی که یک جدول ناشناخته باشد ، ترتیب ردیف ها به احتمال زیاد با پرس و جو قابل تشخیص نیست که به هر طریقی بهینه شده است ، و بنابراین پرس و جو شما مجبور است از طریق ردیف ها بصورت خطی جستجو کند. به عبارت دیگر ، نمایش داده ها باید از طریق هر ردیف جستجو کنند تا ردیف هایی را که مطابق با شرایط است ، پیدا کند. همانطور که تصور می کنید ، این می تواند مدت زمان زیادی طول بکشد. نگاه کردن به هر ردیف بسیار کارآمد نیست.
به عنوان مثال ، جدول زیر یک جدول در یک منبع داده داستانی ، که کاملاً بدون هماهنگ است ، نشان می دهد.
| شركت_يد | واحد | بهای واحد |
| 10 | 12 | 1. 15 |
| 12 | 12 | 1. 05 |
| 14 | 18 | 1. 31 |
| 18 | 18 | 1. 34 |
| 11 | 24 | 1. 15 |
| 16 | 12 | 1. 31 |
| 10 | 12 | 1. 15 |
| 12 | 24 | 1.3 |
| 18 | 6 | 1. 34 |
| 18 | 12 | 1. 35 |
| 14 | 12 | 1. 95 |
| 21 | 18 | 1. 36 |
| 12 | 12 | 1. 05 |
| 20 | 6 | 1. 31 |
| 18 | 18 | 1. 34 |
| 11 | 24 | 1. 15 |
| 14 | 24 | 1. 05 |
اگر قرار بود پرس و جو زیر را اجرا کنیم:
این بانک اطلاعاتی باید به ترتیب 17 ردیف به ترتیب موجود در جدول ، از بالا به پایین ، یک بار جستجو کند. بنابراین برای جستجوی همه نمونه های بالقوه شرکت_ید شماره 18 ، بانک اطلاعاتی باید کل جدول را برای تمام ظواهر 18 در ستون Company_id جستجو کند.
با افزایش اندازه جدول ، این کار فقط بیشتر و بیشتر می شود. با افزایش پیچیدگی داده ها ، آنچه در نهایت می تواند اتفاق بیفتد این است که یک جدول با یک میلیارد ردیف با یک میز دیگر با یک میلیارد ردیف همراه است. اکنون پرس و جو مجبور است دو برابر مقدار ردیف هایی که دو برابر زمان آن است ، جستجو کند.
می بینید که چگونه این مسئله در دنیای اشباع شده داده ما مشکل ساز می شود. جداول در اندازه افزایش می یابد و جستجو در زمان اجرای افزایش می یابد.
در صورت بصری ، پرس و جو یک جدول غیر منتظره ، مانند این به نظر می رسد:

آنچه نمایه سازی انجام می دهد ، ستونی است که شما شرایط جستجو را به ترتیب مرتب شده برای کمک به بهینه سازی عملکرد پرس و جو در آن قرار دهید.
با داشتن یک فهرست در ستون Company_id ، جدول اساساً "نگاه" می کند:
| شركت_يد | واحد | بهای واحد |
| 10 | 12 | 1. 15 |
| 10 | 12 | 1. 15 |
| 11 | 24 | 1. 15 |
| 11 | 24 | 1. 15 |
| 12 | 12 | 1. 05 |
| 12 | 24 | 1.3 |
| 12 | 12 | 1. 05 |
| 14 | 18 | 1. 31 |
| 14 | 12 | 1. 95 |
| 14 | 24 | 1. 05 |
| 16 | 12 | 1. 31 |
| 18 | 18 | 1. 34 |
| 18 | 6 | 1. 34 |
| 18 | 12 | 1. 35 |
| 18 | 18 | 1. 34 |
| 20 | 6 | 1. 31 |
| 21 | 18 | 1. 36 |
اکنون ، پایگاه داده می تواند شماره 18 Company_id را جستجو کند و تمام ستون های درخواستی را برای آن ردیف بازگرداند و سپس به ردیف بعدی بروید. اگر شماره comapny_id ردیف بعدی نیز 18 باشد ، تمام ستون های درخواست شده در پرس و جو را برمی گرداند. اگر Company_id ردیف بعدی 20 باشد ، پرس و جو می داند که جستجو را متوقف کند و پرس و جو به پایان می رسد.
فهرست بندی چگونه کار می کند؟
در واقعیت ، جدول بانک اطلاعاتی هر بار که شرایط پرس و جو به منظور بهینه سازی عملکرد پرس و جو تغییر نمی کند ، دوباره تغییر نمی کند: این غیر واقعی خواهد بود. در واقعیت ، آنچه اتفاق می افتد این است که این فهرست باعث می شود که پایگاه داده یک ساختار داده ایجاد کند. نوع ساختار داده به احتمال زیاد یک درخت B است. در حالی که مزایای درخت B بیشمار است ، اصلی ترین مزیت برای اهداف ما این است که قابل مرتب سازی است. هنگامی که ساختار داده به ترتیب مرتب شده است ، جستجوی ما را به دلایلی که در بالا به آن اشاره کردیم ، کارآمدتر می کند.
هنگامی که این شاخص یک ساختار داده را بر روی یک ستون خاص ایجاد می کند ، مهم است که توجه داشته باشید که هیچ ستون دیگری در ساختار داده ذخیره نمی شود. ساختار داده ما برای جدول فوق فقط شامل شماره های Company_id خواهد بود. واحدها و Unit_Cost در ساختار داده برگزار نمی شود.
چگونه پایگاه داده می داند که سایر زمینه های جدول برای بازگشت چیست؟
شاخص های پایگاه داده همچنین نشانگرهایی را ذخیره می کنند که به سادگی اطلاعات مرجع برای مکان اطلاعات اضافی در حافظه هستند. اساساً این شاخص آدرس خانه Company_id و آن را در دیسک حافظه نگه می دارد. این فهرست در واقع به این شکل خواهد بود:
| شركت_يد | اشاره کننده |
| 10 | _123 |
| 10 | _129 |
| 11 | _127 |
| 11 | _138 |
| 12 | _124 |
| 12 | _130 |
| 12 | _135 |
| 14 | _125 |
| 14 | _131 |
| 14 | _133 |
| 16 | _128 |
| 18 | _126 |
| 18 | _131 |
| 18 | _132 |
| 18 | _137 |
| 20 | _136 |
| 21 | _134 |
با استفاده از آن فهرست ، پرس و جو می تواند فقط ردیف های موجود در ستون Company_id را که 18 و سپس استفاده از نشانگر می تواند به جدول مراجعه کند تا ردیف خاصی را که در آن نشانگر زندگی می کند ، پیدا کند. سپس پرس و جو می تواند برای بازیابی قسمت های ستون های درخواست شده برای ردیف هایی که شرایط را رعایت می کنند ، وارد جدول شوند.
التداول المالي...
ما را در سایت التداول المالي دنبال می کنید
برچسب :
نویسنده : سیروس ابراهیمزاده
بازدید : <-PostHit->
تاريخ : يکشنبه
6 فروردين
1402 ساعت: 15:48