Представим, что у нас есть таблица пользователей (users) или заказов (orders) на десятки миллионов записей и больше. И у нас стоит задача их перебора в любом контексте.
Я представляю себе это в виде цикла, в котором порционно забираем разумное количество записей, что-то вроде:
select * from users order by id limit 1000 offset 0;
Такой запрос выполняется очень быстро, моментально.
Рано или поздно мы приходим к offset, например 40 млн:
select * from users order by id limit 1000 offset 40000000;
И тут запрос может выполняться несколько минут.
Происходит это из-за того, что mysql не может гарантировать, что все элементы будут на своих порядковых местах, ведь может так статься, что элемент 40 000 099 был ранее удален и алгоритмам приходится сканировать все 40 млн элементов для получения выборки.
Решением этой проблемы может стать видоизменение запроса из limit-offset на where-limit:
select * from users where id > 40000000 order by id limit 1000;
Выполняется моментально!
И даже, если не все элементы гарантированно присутствуют в таблице, айдишник для where легко «вытащить» из предыдущего запроса в цепочке.
For the reason that the admin of this web page
is working, no hesitation very soon it will be well-known, due to its feature contents.
Yesterday, while I was at work, my sister stole my iphone and tested to see if it can survive a twenty five foot drop, just so she can be a youtube sensation. My apple
ipad is now broken and she has 83 views. I know this is entirely
off topic but I had to share it with someone!
Hello.
If some one wishes expert view on the topic of running a blog then i propose him/her to
visit this website, Keep up the nice work.
Hello,
I regret to inform you that ****.org will shut down Friday.
We have now made all our databases available to the public on our website at a one-time fee.
Hello questpro.club,
We noticed you are only listed in 18 out of a possible 10k+ directories.
I love the efforts you have put in this, thankyou for all the great content.
Hello, ***** is shutting down.
We have made available all our leads in 145 countries at a one-time fee.
Visit us on ******.
DataList presents all the new leads for you per country!
Hello, we visited questpro.club and noticed you do not have a mobile application.
Hi,
Your website is only listed in 8 out of a possible 12,489 directories.
Hey!
Want some free leads or data for your business?
Hello,
Happy new year!
Hey!
Regards,
Eloise
It’s About Time For You To Learn Effective
Hi,
Want thousands of clients?
Selling at $99 today only.
Hello,
We noticed your domain: questpro.club is listed in very few directories.
Hi,
Do you have a digital product you would like to see promoted for free?
Hi,
This is crazy,
Hello questpro.club
We noticed your website questpro.club doesn’t have a Mobile App for iOS and Android.
Hello,
It is with sad regret t
We are proud to present our latest product for business data