@EmQceR bahsettiği çzümün adı keyset pagination olarak geçiyor. Hem offset problemi için hemde keyset pagination implementasyonu içinde buraya bakabilirsini. https://dev.to/backendandbbq/the-sql-i-love-chapter-one Adını bilmiyordum ama ben bu mantıkla kullanıyordum id değerini JavaScript'le alıp yapıyordum. Bilgi için teşekkürler umarım işine yaramıştır ki dküman da yaramış gzüküyor Bu Yüce Türk Milleti ne ihanetler grdü hepsinin üstesinden gelmeyi başararak tarihe nice zaferler yazdırdı. Bu Millet Kuva-yı milliye hareketini yeniden başlatır. Sivas Kongresini yeniden toplar, Ya İstiklal, Ya lüm diye haykırır ve gereğini yapar. Türk Milleti ihaneti ve hainleri hiç affetmez. Dileğimiz odur ki bu iş sandıkta bitsin, aksi halde "sürüye dalmayı gze alan Kurt, çobanın da, kpeğinde hesabını yapmaz."

index var mı db de? Çok uzun sürmemeli hocam bende 100m satırlı tablo var ebesinin nikahı gibi joinler var 1 saniye bile sürmüyor. Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Elimde 10m kayıt olan bir tablo var. Veritabanı olarak MySQL 8 kullanıyorum ve veritabanı motoru olarak InnoDB kullanıyorum. Belirli filtrelere gre bu 10m'lik tabloda sayfalama yapmam gerekiyor. Sayfalamayı limit ve offset ile yapıyorum (limit 5 offet 1000 gibi). Offset işin içine girdiğinde veritabanı offset sayısı kadar tek tek tek satırları geziyor ve offsete ulaştıktan sonra limit değeri kadar kayıt dnüyor. Bu da demek oluyor ki offset arttıkça tabloda tek tek gezeceği satır sayısı artıyor. Offset 10000 olduğunda ilk 10000 satırı tek tek pas geçmiş oluyor. Buda offset arttıkça büyük performans kaybına sebep oluyor. Bu konuyu aşmak için nasıl yntemler uyguluyorsunuz? herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//

@MhmdAlmz benim sorgum şu şekilde, aşağıda EXPLAIN çıktısını paylaşıyorum. Belki index tarafında benim atladığım birşey vardır. Query: https://paste.ubuntu.com/p/qvDGS4w4ZF/ Explain: https://paste.ubuntu.com/p/bfmnfV27N9/ Indexler: Products tablosunda: category_id ve is_active için tek index. Product_Filter tablosunda product_id için tek index. herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//

@EmQceR bahsettiği çzümün adı keyset pagination olarak geçiyor. Hem offset problemi için hemde keyset pagination implementasyonu içinde buraya bakabilirsini. https://dev.to/backendandbbq/the-sql-i-love-chapter-one herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//

https://youtu.be/B6iNuEuD-gc Burdaki yntemde pagination'u next, prev ile kullanabiliyoruz. ne yazikki N. sayfaya geçiş yapamıyoruz. herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//

ID ye gre getirebilirsin hocam mesela select kolon FROM tablo where ID < idno order by ID desc limit 0,10 Dediğinden en sondaki 10 kaydı getirir sonraki sayfaya tıkladıntan sonra en son id yi alıp o id den küçük olan 10 kayısı getir diye devam eder. umarım anlatabilmişimdir Hocam bahsettiğin load more'da çalışabiliyor. Ancak standart sayfalamada kullanıcı istediği zaman istediği sayfayı seçebileceği için ID'den gitme olayı ne yazikki patates :/ herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//

index var mı db de? Çok uzun sürmemeli hocam bende 100m satırlı tablo var ebesinin nikahı gibi joinler var 1 saniye bile sürmüyor. hocam offset işin içine girince durum değişiyor. ofset 10-20 de sorun yok offset 40000, 50000 geldiğinde ve aynı anda 40 kullanıcı bunu isteyince işler karışıyor. offset işin içine girince konu indexden çıkıyor. offseti yakalayabilecek için offset kadar rowu tek tek scan ediyor. tabiki db sunucunun ram'i yüksekse ve bu ram'e gre ayar yapıldıysa bu konu daha az sancı yaratabiliyor ancak bir noktadan sonra herkes için bir kanser oluyor. bilgin olması için ve ileride karşına gelirse diye araştırmanı neririm. @yolcubulucu dayının paylaştığı video'ya bakarbilirsin istersen. ses ktü ama konuyu anlayabilirsin. ayrıca https://www.slideshare.net/Eweaver/efficient-pagination-using-mysql buda dayının sunumu. TeRRoR tarafından 16/Mar/20 17:53 tarihinde düzenlenmiştir herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//

TeRRoR bunu yazdı @EmQceR bahsettiği çzümün adı keyset pagination olarak geçiyor. Hem offset problemi için hemde keyset pagination implementasyonu içinde buraya bakabilirsini. https://dev.to/backendandbbq/the-sql-i-love-chapter-one Adını bilmiyordum ama ben bu mantıkla kullanıyordum id değerini JavaScript'le alıp yapıyordum. Bilgi için teşekkürler umarım işine yaramıştır ki dküman da yaramış gzüküyor hocam ne yazikki keyset pagination next-prev'de işe yarıyor. 1-2-3-4...123 sayfalamada işe yarayamıyor ne yazikki. Bu arada bir iki düzeltme yapmam gerekiyor. Konuyu açarken paylaştığım sorguda select products. id yazan kısım normalde select products. şeklindeydi ben kurcalarken yanlış olanı paylaşmışım sizinle. select products. id büyük oranda performans artışı sağladı sebebini tam olarak çzemedim ancak group by için oluşturduğu temp table'a sadece id alınca daha az memory ile işlem yaptığı için yoğun kullanımda IO kullanımıda düştü diye düşünüyorum. Bu durumda aslında yıllarca select ile değil kullanacağınız kolonları alın sadece uyarısının güzel bir karşılığı oldu benim için. ORM'nin dezavantajları işte :/ Bu arada offset'in benim için major sorun yaratması group by ile kullanıyor olmam. Şu aşamada select products. id ile çekip dnen id listesini where in ile tekrar çekip kullanıyorum ve gzle grülür bir performans artışı var gzüküyor test ortamında ilerleyen süreçt tekrar karın ağrısı olduğunda bakıcaz duruma artık, eğer bu ekonomik durumda batmazsak tabi :) herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri ğrenmeye çalışmayın. yabancı dil filan ğrenin amq.// s. kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//

https://youtu.be/B6iNuEuD-gc 29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.

ID ye gre getirebilirsin hocam mesela select kolon FROM tablo where ID < idno order by ID desc limit 0,10 Dediğinden en sondaki 10 kaydı getirir sonraki sayfaya tıkladıntan sonra en son id yi alıp o id den küçük olan 10 kayısı getir diye devam eder. umarım anlatabilmişimdir Bu Yüce Türk Milleti ne ihanetler grdü hepsinin üstesinden gelmeyi başararak tarihe nice zaferler yazdırdı. Bu Millet Kuva-yı milliye hareketini yeniden başlatır. Sivas Kongresini yeniden toplar, Ya İstiklal, Ya lüm diye haykırır ve gereğini yapar. Türk Milleti ihaneti ve hainleri hiç affetmez. Dileğimiz odur ki bu iş sandıkta bitsin, aksi halde "sürüye dalmayı gze alan Kurt, çobanın da, kpeğinde hesabını yapmaz."