Skip to content

Commit

Permalink
New blogposts
Browse files Browse the repository at this point in the history
  • Loading branch information
Manuchehr Usmonov committed Aug 18, 2023
1 parent 4739c08 commit 6f4f97a
Show file tree
Hide file tree
Showing 4 changed files with 259 additions and 2 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ yalc.lock
.yalc
.idea
yarn-error.log
.env.local
.env.local
package-lock.json
2 changes: 1 addition & 1 deletion data/blog.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"title":"MySQL va o‘lib borayotgan MariaDB","description":"Shaxiy kompyuterlar erasining boshlanish davrida, yaʼni 1979-yilda TcX kompaniyasi tomonidan maʼlumotlarni boshqarish...","slug":"mysql-va-olib-borayotgan-mariadb","date":"April 14, 2023","body":null},{"title":"Korrektor.uz uchun api va texnik hujjatlar","description":"Uzinfocom Open Source jamoasidan korrektor.uz foydalanuvchilari uchun bahorgi sovg'a.","slug":"korrektor-uz-api-docs","date":"March 9, 2023","body":null},{"title":"Avr uchun kodlarni optimizatsiya qilish","description":"Arduino board resurs tejamaydigan parazit dasturchilar uchun juda foydali qurilma hisoblanadi. Chunki ushbu kichik...","slug":"avr-uchun-kodlarni-optimizatsiya-qilish","date":"February 10, 2023","body":null},{"title":"C++(QT)'da fluent interface","description":"Obyektning bunday qobiliyati bilan ishlashni php, javascript, java dasturchilar juda yaxshi bilishadi. Asosan javascriptda...","slug":"cqtda-fluent-interface","date":"February 7, 2023","body":null},{"title":"Tashlandiq laboratoriyadagi tajribalar - yoxud Iphone siri","description":"Iphone qurilmasing tarixi va siz bilmagan Stiv Jobs","slug":"tashlandiq-laboratoriyadagi-tajribalar-yoxud-iphone-siri","date":"January 24, 2023","body":null},{"title":"Nokia - Ajdarning o'limi","description":"Tarixdagi eng kuchli kompaniyaning achinarli tarixi haqida","slug":"nokia-ajdarning-olimi","date":"January 21, 2023","body":null},{"title":"Virtual KVM (Qurilmalarni tarmoq orqali ulashamiz)","description":"Bir nechta kompyuterni birgina sichqoncha va klaviatura orqali boshqaramiz","slug":"virtual-kvm-qurilmalarni-tarmoq-orqali-ulashamiz","date":"January 15, 2023","body":null},{"title":"rm (remove) uchun qo'lbola alternativ","description":"Fayllarni o'chirish uchun qo'lbola kod yozamiz...","slug":"rm-remove-uchun-qolbola-alternativ","date":"January 10, 2023","body":null},{"title":"Linux swap bu nima?","description":"Linux swap haqida siz bilmagan ma'lumotlar","slug":"linux-swap-bu-nima","date":"January 6, 2023","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 4-qism","description":"PHP dasturlar tilida otishma o'yinini ishlab chiqish...","slug":"php-dasturlash-tilida-oyin-yaratish-4-qism","date":"December 6, 2022","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 3-qism","description":"PHP dasturlar tilida Snake Xenzia o'yinini ishlab chiqish...","slug":"php-dasturlash-tilida-oyin-yaratish-3-qism","date":"December 5, 2022","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 2-qism","description":"Buyruqlar qatoriga mos keladigan o'yinlardan eng soddalaridan biri bu Tic Tac Toe bo'lsa kerak...","slug":"php-dasturlash-tilida-oyin-yaratish-2-qism","date":"December 4, 2022","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 1-qism","description":"Yaqinda youtubeda eski kompyuterlar haqidagi hujjatli filmni ko'rayotganimda buyruq satri (cli) yordamida...","slug":"php-dasturlash-tilida-oyin-yaratish-1-qism","date":"December 3, 2022","body":null},{"title":"Telegram instant view nima va qanday ishlaydi?","description":"Instant view vazifa jihatdan kontentni foydalanuvchilarga ortiqcha harakatlarsiz tezkorlik bilan yetkazishni ta'minlaydi...","slug":"telegram-instant-view-nima-va-qanday-ishlaydi","date":"November 22, 2022","body":null},{"title":"Telegram chat botlar. Bu qanday ishlaydi?","description":"Chat botlar odamlarning texnologiya bilan o'zaro munosabatida inqilob qilmoqda. So'nggi yillarda ularning ishlab chi...","slug":"telegram-chat-botlar-bu-qanday-ishlaydi","date":"November 18, 2022","body":null},{"title":"Mantiqiy eshiklar","description":"Ko'pgina zamonaviy kompyuterlarda mantiqiy eshiklar rezistorlar, diodlar va boshqa elektr komponentlar bilan birlashtirilgan tranzistorlar yordamida qurilgan...","slug":"mantiqiy-eshiklar","date":"October 17, 2022","body":null},{"title":"Nol va birdan assemblergacha","description":"Maktabdagi informatika o'qituvchingiz sizga kompyuter 0 va 1 orqali ishlashini aytgani bilan lekin uni aslida qanday ishlashini tushuntirib bermagan bo'lsa kerak a?","slug":"nol-va-birdan-assemblergacha","date":"October 16, 2022","body":null},{"title":"Led ring uchun ikkinchi hayotni bag'shlash","description":"Yaqinda veb kamera yorug'ligini ta'minlash uchun do'kondan Led RING sotib olishga to'g'ri keldi. Boshida muammosiz ishla...","slug":"led-ring-uchun-ikkinchi-hayotni-bagshlash","date":"September 12, 2022","body":null},{"title":"WAFni yorib kirish ( kiberxavfsizlik )","description":"Axmoqlar uchun ishlab chiqilgan WAF tizimini chetlab o'tish. Saytlar xavfsizligini turli usullarda yorib kirish...","slug":"wafni-yorib-kirish-kiberxavfsizlik","date":"August 30, 2022","body":null},{"title":"Multilanguage (ko'ptilli dasturlar) bu qanday ishlaydi?","description":"Dasturiy ta'minot auditoriyasini oshirishning eng yaxshi usullaridan biri bu uning interfeysni ko'p tillar uchun moslay olish hisoblanadi...","slug":"multilanguage-koptilli-dasturlar-bu-qanday-ishlaydi","date":"August 25, 2022","body":null},{"title":"Raspberry PIni radioxuliganlarning orzusiga aylantiramiz","description":"RPI bizga ortiqcha elektron komponentlarsiz radio uzatgich yaratishni amalga oshirishga yordam beradi...","slug":"raspberry-pini-radioxuliganlarning-orzusiga-aylantiramiz","date":"August 6, 2022","body":null},{"title":"Bo'lajak dasturchilar uchun tavsiyalar","description":"Dasturlash tillari kundan kunga ko'payib rivojlanib boryapti. Lekin muammo yechimini bunda deb bilmaslik kerak. Dasturlash tillari bu shunchaki muammoni yechishga yordam beruvchi vositalar xolos.","slug":"bolajak-dasturchilar-uchun-tavsiyalar","date":"August 3, 2022","body":null},{"title":"Dasturchiga matematikadan ko'ra mantiq ko'proq kerakmi?","description":"Barcha matematik jarayonlar mantiqqa asoslanib ishlab chiqilgan bo'lsada, har ikkisi xilma-xil maqsadlarga ega bo'lgan turlicha vositalardir.","slug":"dasturchiga-matematikadan-kora-mantiq-koproq-kerakmi","date":"August 2, 2022","body":null},{"title":"Psevdo kod (palag'da algoritm) nima va u biz uchun nega kerak?","description":"Psevdo kod (palag'da algoritm) nima va u biz uchun nega kerak?","slug":"psevdokod","date":"June 27, 2022","body":null},{"title":"Operatsion tizim nima va u qanday ishlaydi?","description":"Shaxsiy kompyuterlarning operatsion tizimlari yaratilish tarixiga nazar solsak, sakkiz razryadli shaxsiy kompyuterlar...","slug":"operatsion_tizim_nima_va_u_qanday_ishlaydi","date":"June 25, 2022","body":null},{"title":"SVG Caching with <use>","description":"Smaller DOM size by reusing existing SVG icons","slug":"svg-caching-with-use","date":"June 25, 2020","og":"https://i.microlink.io/https%3A%2F%2Fcards.microlink.io%2F%3Fpreset%3Dpaco%26title%3DSVG%2520Caching%2520with%2520%253Cuse%253E%23","body":null}]
[{"title":"Mysqlga juniorcha va seniorcha so'rovlar","description":"Ma'lumotlar bazasiga amalga oshiriladigan so'rovlarni optimizatsiya qilish uchun kichik misol...","slug":"mysqlga-juniorcha-va-seniorcha-sorovlar","date":"August 18, 2023","body":null},{"title":"Nginxda ichki redireksiya yoxud katta stream servisda havolalarni tekshirish qanday amalga oshirilgan edi?","description":"Odatda statik fayllarni uzatish uchun nginx server ko'targanda indeksatsiyadan himoyalash ancha muammoga aylanadi...","slug":"nginxda-ichki-redireksiya-yoxud-katta-stream-servisda-havolalarni-tekshirish-qanday-amalga-oshirilgan-edi","date":"July 27, 2023","body":null},{"title":"MySQL va o‘lib borayotgan MariaDB","description":"Shaxiy kompyuterlar erasining boshlanish davrida, yaʼni 1979-yilda TcX kompaniyasi tomonidan maʼlumotlarni boshqarish...","slug":"mysql-va-olib-borayotgan-mariadb","date":"April 14, 2023","body":null},{"title":"Korrektor.uz uchun api va texnik hujjatlar","description":"Uzinfocom Open Source jamoasidan korrektor.uz foydalanuvchilari uchun bahorgi sovg'a.","slug":"korrektor-uz-api-docs","date":"March 9, 2023","body":null},{"title":"Avr uchun kodlarni optimizatsiya qilish","description":"Arduino board resurs tejamaydigan parazit dasturchilar uchun juda foydali qurilma hisoblanadi. Chunki ushbu kichik...","slug":"avr-uchun-kodlarni-optimizatsiya-qilish","date":"February 10, 2023","body":null},{"title":"C++(QT)'da fluent interface","description":"Obyektning bunday qobiliyati bilan ishlashni php, javascript, java dasturchilar juda yaxshi bilishadi. Asosan javascriptda...","slug":"cqtda-fluent-interface","date":"February 7, 2023","body":null},{"title":"Tashlandiq laboratoriyadagi tajribalar - yoxud Iphone siri","description":"Iphone qurilmasing tarixi va siz bilmagan Stiv Jobs","slug":"tashlandiq-laboratoriyadagi-tajribalar-yoxud-iphone-siri","date":"January 24, 2023","body":null},{"title":"Nokia - Ajdarning o'limi","description":"Tarixdagi eng kuchli kompaniyaning achinarli tarixi haqida","slug":"nokia-ajdarning-olimi","date":"January 21, 2023","body":null},{"title":"Virtual KVM (Qurilmalarni tarmoq orqali ulashamiz)","description":"Bir nechta kompyuterni birgina sichqoncha va klaviatura orqali boshqaramiz","slug":"virtual-kvm-qurilmalarni-tarmoq-orqali-ulashamiz","date":"January 15, 2023","body":null},{"title":"rm (remove) uchun qo'lbola alternativ","description":"Fayllarni o'chirish uchun qo'lbola kod yozamiz...","slug":"rm-remove-uchun-qolbola-alternativ","date":"January 10, 2023","body":null},{"title":"Linux swap bu nima?","description":"Linux swap haqida siz bilmagan ma'lumotlar","slug":"linux-swap-bu-nima","date":"January 6, 2023","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 4-qism","description":"PHP dasturlar tilida otishma o'yinini ishlab chiqish...","slug":"php-dasturlash-tilida-oyin-yaratish-4-qism","date":"December 6, 2022","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 3-qism","description":"PHP dasturlar tilida Snake Xenzia o'yinini ishlab chiqish...","slug":"php-dasturlash-tilida-oyin-yaratish-3-qism","date":"December 5, 2022","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 2-qism","description":"Buyruqlar qatoriga mos keladigan o'yinlardan eng soddalaridan biri bu Tic Tac Toe bo'lsa kerak...","slug":"php-dasturlash-tilida-oyin-yaratish-2-qism","date":"December 4, 2022","body":null},{"title":"Php dasturlash tilida o'yin yaratish: 1-qism","description":"Yaqinda youtubeda eski kompyuterlar haqidagi hujjatli filmni ko'rayotganimda buyruq satri (cli) yordamida...","slug":"php-dasturlash-tilida-oyin-yaratish-1-qism","date":"December 3, 2022","body":null},{"title":"Telegram instant view nima va qanday ishlaydi?","description":"Instant view vazifa jihatdan kontentni foydalanuvchilarga ortiqcha harakatlarsiz tezkorlik bilan yetkazishni ta'minlaydi...","slug":"telegram-instant-view-nima-va-qanday-ishlaydi","date":"November 22, 2022","body":null},{"title":"Telegram chat botlar. Bu qanday ishlaydi?","description":"Chat botlar odamlarning texnologiya bilan o'zaro munosabatida inqilob qilmoqda. So'nggi yillarda ularning ishlab chi...","slug":"telegram-chat-botlar-bu-qanday-ishlaydi","date":"November 18, 2022","body":null},{"title":"Mantiqiy eshiklar","description":"Ko'pgina zamonaviy kompyuterlarda mantiqiy eshiklar rezistorlar, diodlar va boshqa elektr komponentlar bilan birlashtirilgan tranzistorlar yordamida qurilgan...","slug":"mantiqiy-eshiklar","date":"October 17, 2022","body":null},{"title":"Nol va birdan assemblergacha","description":"Maktabdagi informatika o'qituvchingiz sizga kompyuter 0 va 1 orqali ishlashini aytgani bilan lekin uni aslida qanday ishlashini tushuntirib bermagan bo'lsa kerak a?","slug":"nol-va-birdan-assemblergacha","date":"October 16, 2022","body":null},{"title":"Led ring uchun ikkinchi hayotni bag'shlash","description":"Yaqinda veb kamera yorug'ligini ta'minlash uchun do'kondan Led RING sotib olishga to'g'ri keldi. Boshida muammosiz ishla...","slug":"led-ring-uchun-ikkinchi-hayotni-bagshlash","date":"September 12, 2022","body":null},{"title":"WAFni yorib kirish ( kiberxavfsizlik )","description":"Axmoqlar uchun ishlab chiqilgan WAF tizimini chetlab o'tish. Saytlar xavfsizligini turli usullarda yorib kirish...","slug":"wafni-yorib-kirish-kiberxavfsizlik","date":"August 30, 2022","body":null},{"title":"Multilanguage (ko'ptilli dasturlar) bu qanday ishlaydi?","description":"Dasturiy ta'minot auditoriyasini oshirishning eng yaxshi usullaridan biri bu uning interfeysni ko'p tillar uchun moslay olish hisoblanadi...","slug":"multilanguage-koptilli-dasturlar-bu-qanday-ishlaydi","date":"August 25, 2022","body":null},{"title":"Raspberry PIni radioxuliganlarning orzusiga aylantiramiz","description":"RPI bizga ortiqcha elektron komponentlarsiz radio uzatgich yaratishni amalga oshirishga yordam beradi...","slug":"raspberry-pini-radioxuliganlarning-orzusiga-aylantiramiz","date":"August 6, 2022","body":null},{"title":"Bo'lajak dasturchilar uchun tavsiyalar","description":"Dasturlash tillari kundan kunga ko'payib rivojlanib boryapti. Lekin muammo yechimini bunda deb bilmaslik kerak. Dasturlash tillari bu shunchaki muammoni yechishga yordam beruvchi vositalar xolos.","slug":"bolajak-dasturchilar-uchun-tavsiyalar","date":"August 3, 2022","body":null},{"title":"Dasturchiga matematikadan ko'ra mantiq ko'proq kerakmi?","description":"Barcha matematik jarayonlar mantiqqa asoslanib ishlab chiqilgan bo'lsada, har ikkisi xilma-xil maqsadlarga ega bo'lgan turlicha vositalardir.","slug":"dasturchiga-matematikadan-kora-mantiq-koproq-kerakmi","date":"August 2, 2022","body":null},{"title":"Psevdo kod (palag'da algoritm) nima va u biz uchun nega kerak?","description":"Psevdo kod (palag'da algoritm) nima va u biz uchun nega kerak?","slug":"psevdokod","date":"June 27, 2022","body":null},{"title":"Operatsion tizim nima va u qanday ishlaydi?","description":"Shaxsiy kompyuterlarning operatsion tizimlari yaratilish tarixiga nazar solsak, sakkiz razryadli shaxsiy kompyuterlar...","slug":"operatsion_tizim_nima_va_u_qanday_ishlaydi","date":"June 25, 2022","body":null},{"title":"SVG Caching with <use>","description":"Smaller DOM size by reusing existing SVG icons","slug":"svg-caching-with-use","date":"June 25, 2020","og":"https://i.microlink.io/https%3A%2F%2Fcards.microlink.io%2F%3Fpreset%3Dpaco%26title%3DSVG%2520Caching%2520with%2520%253Cuse%253E%23","body":null}]
129 changes: 129 additions & 0 deletions posts/mysqlga-juniorcha-va-seniorcha-sorovlar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
title: "Mysqlga juniorcha va seniorcha so'rovlar"
description: "Ma'lumotlar bazasiga amalga oshiriladigan so'rovlarni optimizatsiya qilish uchun kichik misol..."
slug: mysqlga-juniorcha-va-seniorcha-sorovlar
date: August 18, 2023
---

Tasavvur qilaylik bizda sotilgan mahsulotlar ma'lumotlari saqlanadigan jadval bor. Unda mahsulot nomi, idenfikatori va vaqti kabi ma'lumotlar saqlanadi. Bizdan talab etiladigani esa buyurtmachiga statistika chiqarib berishim lozim. Odatda statistikalar haftalik yoki oylik ko'rinishda beriladi.

## Junior bu holatda nima qiladi?

Albatta oylar yoki haftadagi kunlarning har biri bilan ma'lum shartlar asosida qayta qayta so'rov amalga oshiradi. Bu holatda esa ma'lumotlar ombori uchun so'rovlar soni oshib yuklamalar keltirib chiqaradi.

Psevdo kod misolida:

```
for loop {
date = getDate()
query = "select query"
}
```

## Seniorcha yechim:

Yuqoridagi muammoni mysqlning o'zidagi tayyor funksiyalardan foydalanib birgina so'rov asosida chiqarish imkoni mavjud.

- COALESCE() - Ro'yxatdagi NULL bo'lmagan birinchi qiymatni qaytaradi
- YEARWEEK() - Berilgan vaqtga nisbatan yil va haftani qaytaradi
- NOW() - Real vaqtni qaytaradi

Demak yuqoridagilarga asoslanib ushbu haftada sotilgan maxsulotlarni kunlik sonini chiqaramiz:

```sql
SELECT
COALESCE( COUNT( id ), 0 ) AS count,
DAYNAME( datetime ) as dayname
FROM sales
WHERE YEARWEEK( datetime ) = YEARWEEK( NOW() )
GROUP BY datetime;
```

Yoki unix timestamp saqlanadigan holat uchun:

```sql
SELECT
COALESCE( COUNT( id ), 0 ) AS count,
DAYNAME( FROM_UNIXTIME( datetime ) ) as dayname
FROM sales
WHERE
YEARWEEK( FROM_UNIXTIME( datetime ) ) = YEARWEEK( NOW() )
GROUP BY FROM_UNIXTIME( datetime );
```

YEARWEEK( NOW() ) qiymatini YEARWEEK( 'yyyy-mm-dd' ) ko'rinishida berib xohlagan sanaga moslab ma'lumotlarni chiqarish ham mumkin.

Oylar bo'yicha statistika:

```sql
SELECT
COALESCE( COUNT( id ), 0 ) AS count,
MONTHNAME( datetime ) as monthname,
EXTRACT(YEAR_MONTH FROM datetime ) as month
FROM sales
GROUP BY EXTRACT(YEAR_MONTH FROM datetime);
```

Oylar bo'yicha statistika (unix timestamp uchun):

```sql
SELECT
COALESCE( COUNT( id ), 0 ) AS count,
MONTHNAME( FROM_UNIXTIME( datetime ) ) as monthname,
EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME( datetime ) ) as month
FROM sales
GROUP BY EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME( datetime ) );
```

Yuqorida keltirilgan birgina so'rov asosida mysql mahsulotlarning sotilgan sonini hafta yoki oy nomlari asosida qaytaradi. Tayyor ma'lumot olingach, uni o'zingiz bilgan tilda manipulatsiya qilish qiyinchilik tug'dirmaydi.

## Bonus

Tasavvurimizni yana bir ishga tushirsakda sotilgan mahsulotlarni foizlardagi nisbatini ham chiqarsak. Bunda albatta so'rov natijasini yana qayta ishlashga ehtiyoj sezilmaydi.

```sql
SELECT id, COUNT(*) AS count, 100 * COUNT(*)/s.total_sum AS percentage
FROM sales
CROSS JOIN (
SELECT COUNT(*) AS total_sum
FROM sales
) AS s
GROUP BY id;
```

```
id count percentage
1 218022 15.9904
2 533122 39.1009
3 574475 42.1339
4 37833 2.7748
```

Endi yuqoridagi so'rovlarni birlashtirish orqali sotilgan maxsulotlar sonini oylarga nisbatini ham olish mumkin bo'ladi

```sql
SELECT
id,
MONTHNAME( datetime ) as month,
EXTRACT(YEAR_MONTH FROM datetime ) as date,
COUNT( id ) AS count,
CONCAT(ROUND( (100 * COUNT( id )/s.total_sum), 2 ), '%') as percentage
FROM sales
CROSS JOIN (
SELECT COUNT( id ) AS total_sum FROM sales
) AS s
GROUP BY EXTRACT( YEAR_MONTH FROM datetime )
ORDER BY count DESC
```

```
id month date count percentage
1 November 202211 10739 8.17%
2 October 202210 8970 6.82%
3 September 202209 8672 6.59%
4 July 202207 8623 6.56%
```

## Xulosa

Albatta bu birgina so'rovlar orqali amalga oshirish mumkin bo'lgan ishlar uchun kichik misol xolos, ammo sizning optimizatsiya masalasidagi qarashlaringizga oz bo'lsada tasir ko'rsata oladi degan umiddaman.
Loading

1 comment on commit 6f4f97a

@vercel
Copy link

@vercel vercel bot commented on 6f4f97a Aug 18, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.