当前位置: 首页 > 网络应用技术

mysql Orderby并限制丢失的数据问题并使用相交导致效率较慢

时间:2023-03-06 15:43:53 网络应用技术

  背景:您需要在订单号中筛选所有不同的手机号码,订单号约为2000万+

  思维

  1.批量获取数据库数据。

  2.根据移动电话号码的前四位数字,从移动电话号码的前四个开始,将数据放在文件中。例如:188050502xxxx放置在File 1880,1881502xxxx中的1880502xxxx,于1881年放置。这些文件均匀地放置在A文件夹下。

  3.遍历文件夹A,确定文件是否超过某个设置值,可以由您自己确定该值。如果超过该值,请在流中读取文件内容,以防止内存不足,然后继续拆卸,然后将其放入另一个文件夹中,例如:188050210xx将其放入188050210文件,188050211xx Holiday 1888050211文件。

  4.直到获得的文件少于设定值,您可以一次读取PHP并将其拆卸为数组。使用array_nique函数在不重复的情况下获得唯一数字。

  同时使用时,MySQL限制和订单丢失数据问题记录:

  从pft_module_price选择= 1订单按等级desc限制0,10

  从pft_module_price选择= 1订单按等级desc限制10,10

  当两个SQL执行时,在两个运行结果中将出现一些重复的数据和某些数据的丢失。猜测等级值是相同的,并且两种是不同的,导致了两个收益的重复和丢失。

  从pft_module_price选择= 1订单按等级,id desc limit 0,10

  订购时添加更多ID,结果正常。

  我发现额外的使用相交。

  通过设置设置Optimizer_Switch ='index_merge_intersection = off'

  执行Exorain SQL语句再次使用索引条件执行SQL语句速度变得快速

  或强行不使用索引