Barchamiz dastur yasayotganda yoki biror dasturlash tili bilan database connection qilganmiz. O'sha yerda yokida pagination qilishda cursor so'ziga duch kelganmiz, xo'sh cursor o'zi nima?
Cursor - result set ustida iteration yoki DML operatsiyalarini bajaruvchi mechanism desak bo'ladi. DML bu Data Manipulation Language ya'ni siz qachonki
INSERT, DELETE yoki SELECT kabi operatsiyalarni bajarishni sitasangiz uni DMLga jo'natasiz. DML esa uni parse (tahlil) qilib siz istayotgan operatsiyani bajaradi, high level abstraction. MySQLda directly cursor yaratib bo'lmaydi ya'ni funksiyani tashqarisida. Ammo PostgreSQLda buni imkoniyati bor, (Postgres zo'r MySQL yomon 😉️️️️️️).
Cursor orqali bir vaqtni o'zida result setni manipulatsiya qilishingiz mumkin. Ammo cursor bir vaqtda faqat bitta rowga reference bo'la olishini unutmang. Film download qilish uchun sizga X GB xotira va Y minut sabr talab qiladi va keyin uni miriqib tomosha qilishigizga Z minut ketadi, biz buni big result setga o'xshatamiz. Agar siz uni o'rniga streaming servicedan foydalanib kino ko'rmoqchi bo'lsangiz, real timeda mazza qilib ko'rishingiz mumkin (internet yaxshi bo'lsa kifoya), va biz buni cursor ishlatishga o'xshatamiz.
Big resultset - butun operatsiyalar bajarilmagunicha sizga natijani bermaydi. Agar tasavvur qiling natija juda katta bo'lsa ko'p vaqt va ko'p memory talab qiladi. Har qanday query serverga jo'natiladi, uni server parse qiladi, execute qiladi va resultset ni olib yana sizga network orqali jo'natadi. Cursor esa bu yerda sizga row by row ish qilish imkoniyatini beradi. Ya'ni siz barchasini bittada olish o'rniga qatorma-qator qabul qilasiz.
Conclusion
: Cursor saves your time and memory
Xazillar litsenziyalangan : )
@otabekswe