Sort key — element yoki recordlarni tartiblashda taqqoslanadigan qiymatni aniqlovchi kalitdir. U bitta field, bir nechta fielddan tuzilgan tuple yoki original qiymatdan hisoblangan funksiya natijasi bo‘lishi mumkin. Sort key ma’lumotning fizik storage sorting keyidan farqli kontekstda ham ishlatiladi: algoritm va query natijasining tartib mezonini bildiradi.
Bir va ko‘p maydonli kalit
Foydalanuvchilar last_name, keyin first_name bo‘yicha tartiblansa composite key (last_name, first_name) bo‘ladi. Birinchi qiymatlar teng bo‘lgandagina ikkinchi taqqoslanadi. To‘liq deterministik pagination uchun unique tie-breaker, masalan id, oxiriga qo‘shiladi. Aks holda teng recordlar sahifalar orasida joy almashishi mumkin.
Ascending va descending har component uchun alohida belgilanadi. SQLda ORDER BY created_at DESC, id DESC cursor paginationga mos. Cursor oxirgi tuple ni saqlaydi va keyingi query lexicographic shart bilan davom etadi. Offset katta bo‘lganda ko‘p recordni skip qilishi, cursor esa indeksdan yurishi mumkin.
Key function
Dasturlash tilidagi sort API comparator o‘rniga key function qabul qilishi mumkin. key=lambda user: user.age har elementdan yoshni oladi. Qimmat normalizatsiya har taqqoslashda qayta bajarilmasdan bir marta keyga hisoblanishi Schwartzian transformga o‘xshash usul bilan tezlashadi.
Comparator transitive, antisymmetric va consistent bo‘lishi kerak. a < b, b < c, ammo c < a bo‘lsa algoritm noto‘g‘ri yoki nondeterministic natija beradi. Comparator tashqi mutable statega bog‘lanmasligi zarur.
Matn va kollatsiya
Binary sort Unicode code point yoki bayt tartibiga qaraydi, tilga mos lug‘aviy tartibni bermasligi mumkin. Collation case, accent, locale va numeric substringni boshqaradi. O‘zbek lotinidagi apostrof variantlari Unicode normalizatsiyasiz alohida ko‘rinishi mumkin. Database index kollatsiyasi query ORDER BY kollatsiyasiga mos bo‘lmasa indeks tartibidan foydalana olmaydi.
Case-insensitive key sifatida lowercasing har til uchun yetarli emas. Unicode case folding va locale qoidasi ishlatiladi. Original matn ko‘rsatish uchun saqlanadi, sort key alohida hisoblanadi. Collation library versiyasi o‘zgarsa tartib va index rebuild talabi paydo bo‘lishi mumkin.
Null va maxsus qiymatlar
Null birinchi yoki oxirgi joylashtirilishi platformaga bog‘liq. SQLda NULLS FIRST/LAST aniq yoziladi. Floating-point NaN odatiy sonlar bilan total orderga ega bo‘lmasligi mumkin; sort API maxsus qoidani belgilaydi. Sana turli timezone matni sifatida emas, normalizatsiyalangan instant yoki biznes lokal vaqtga qarab tartiblanadi.
Stable sort teng keyli elementlarning oldingi tartibini saqlaydi. Multi-pass sortda avval ikkilamchi, keyin asosiy key bo‘yicha stable sort qilish composite tartib beradi. Unstable sort tez yoki kam xotirali bo‘lishi mumkin, lekin tie orderga suyanib bo‘lmaydi.
Index va distributed sort
B-tree sort key bo‘yicha record pointerlarni tartibda saqlaydi. Query key prefixiga mos bo‘lsa alohida sortdan qochadi. Distributed query har shardda local sort va top-k bajarib, coordinator merge qiladi. Global sort barcha data ni shuffle qilishi va spill yaratishi mumkin; limit hamda partitioning xarajatni kamaytiradi.
Barqaror tartib
Sort key qiymatlari teng bo‘lsa, natijaning umumiy tartibi aniqlanmagan bo‘lishi mumkin. Sahifalashda bu elementning takror ko‘rinishi yoki tushib qolishiga sabab bo‘ladi. Shu bois asosiy kalitga noyob identifikator ikkilamchi mezon sifatida qo‘shiladi. Matn saralashda registr, til va kollatsiya qoidalari ham kalitning amaliy ma’nosiga ta’sir qiladi.
Bog‘liq tushunchalar
Sorting algorithm, Comparator, Stable sort, Collation, Composite key, ORDER BY, Cursor pagination