تو دیتابیس ها یه مفهومی وجود داره به اسم clustered index که در مقابلش non clustered index قرار میگیره
خب این clustered index یعنی چی؟ یعنی اینکه ترتیبی که داده ها در ایندکس قرار میگیرن، همون ترتیبی هست که داده ها در فایل و دیسک ذخیره میشن.
بنابراین هر جدول دیتابیس فقط میتونه یه clustered index داشته باشه که معمولا primary key هست.
کجا ها clustered index مهمه؟ جاهایی که شما range query یا sequential scan داری مهم میشه
چرا مهم میشه؟ چون دیتابیس با تعداد io کمتر رکوردهارو از فایل و دیسک fetch میکنه
حالا قرار دادن یه guid مثل uuid به عنوان primary key چه بلایی سر clustered index میاره؟ عملا رکوردهایی که در ایندکس دارن مرتب میشن میتونن تو فایل های مختلفی از دیسک scatter بشن و هزینه fetch کردن شون در کوئری های range رو بالا ببره.
یه سری دیتابیس ها یه سری بهبود برای این قضیه دارن، مثلا یه implicit primary key خودشون در نظر میگیرن که incremental integer هست و اون رو clustered index در نظر میگیرن.
Be careful with GUID as clustered index
https://blog.novanet.no/careful-with-guid-as-clustered-index/
@gocasts
Post #608
4.09K
Go Casts | Systems & Agents 🚀 اگه میخوای بیشتر در مورد انواع ایندکس های دیتابیس بدونی پیشنهاد میکنم این سری آموزش ویدیویی از PlanetScale رو ببین. دیدن ش دید عمیق تری بهت میده که بهتر از ایندکس ها استفاده کنی. لیست موضوعاتی که پوشش داده Introduction to indexes B+ trees Primary keys Secondary…

- 👍 40
- ❤ 2