mysql杂项

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: mysql杂项

2000万+数据里筛选不同的手机号

背景:接到个任务需要筛选出订单号里的所有不同的手机号,订单数约在2000万+

思路

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

2.根据手机号前四位,将取出来的数据分别放在以手机号前四位开头的文件中。如:1880502xxxx 放在文件1880里,1881502xxxx 放在1881里。这些文件统一放在A文件夹下。

3.遍历文件夹A,判断文件是否超出某个设定值,值可由自己定。如果超出,以流式的方法将文件内容读进php,防止内存不足。然后继续拆解,再放进另一个文件夹之中,如:188050210xx 放进 188050210文件中,188050211xx 放假188050211文件中。

4.直到最后所得到的文件小于设定值,则可一次性读到php中,并拆解成数组,使用array_unique函数,一次性获得唯一不重复的号码。

mysql orderby和limit丢失数据问题

mysql limit 和 order by 同时使用时丢失数据问题记录:

SELECT id,mode,target_id,fee,begin_time,end_time FROM pft_module_price WHERE type = 1 ORDER BY rank DESC LIMIT 0,10

SELECT id,mode,target_id,fee,begin_time,end_time FROM pft_module_price WHERE type = 1 ORDER BY rank DESC LIMIT 10,10

两条sql执行时,两次的运行结果中会出现一些重复数据和丢失一些数据。猜测是rank值都一样的情况下,两次排序是不一样的,导致两次取得值会出现重复和丢失。

SELECT id,mode,target_id,fee,begin_time,end_time FROM pft_module_price WHERE type = 1 ORDER BY rank,id DESC LIMIT 0,10

order by 的时候多加个 id,结果正常。

image.png

mysql using intersect导致效率变慢

explain SELECT DISTINCT  `id`,`fid`,`aid`,`daction`,`dmoney`,`lmoney` FROM pft_member_journal 
WHERE `rectime` BETWEEN '2017-03-13 00:00:00' AND '2017-03-13 23:59:59' AND `fid` = 4 AND `aid` = 50618 AND `ptype` = 2

发现 extra里使用了using intersect。

通过设置 SET optimizer_switch = 'index_merge_intersection=off'

再次执行exolain sql语句 变成了using index condition 执行sql语句 速度变得飞快

或者强制不使用索引

SELECT DISTINCT  `id`,`fid`,`aid`,`daction`,`dmoney`,`lmoney` FROM pft_member_journal IGNORE index(aid,fid)
WHERE `rectime` BETWEEN '2017-03-13 00:00:00' AND '2017-03-13 23:59:59' AND `fid` = 4 AND `aid` = 50618 AND `ptype` = 2


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL
Mysql常用语法总结
Mysql常用语法总结
23 0
|
3月前
|
SQL 存储 算法
mysql常用指令操作
mysql常用指令操作
|
2月前
|
关系型数据库 MySQL 程序员
Mysql常用语法
Mysql常用语法
9 0
|
3月前
|
关系型数据库 MySQL
mysql一些常用语法
mysql一些常用语法
|
9月前
|
SQL 关系型数据库 MySQL
MySQL的使用——【初识MySQL】第二节
MySQL的使用——【初识MySQL】第二节
52 0
|
11月前
|
SQL 关系型数据库 MySQL
MySQL-系统信息函数
MySQL-系统信息函数
|
SQL 关系型数据库 MySQL
软件开发入门教程网之 MySQL 管理 MySQL ALTER命令 MySQL 复制表 MySQL 连接 MySQL 创建数据库 MySQL 创建数据表 MySQL 数据类型 MySQL 导出数据 M
MySQL 表中使用INSERT INTOSQL语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 ​​语法​​
|
存储 监控 Oracle
《MySQL高级篇》一、MySQL的目录结构
《MySQL高级篇》一、MySQL的目录结构
《MySQL高级篇》一、MySQL的目录结构
|
关系型数据库 MySQL 数据库连接
使用MySqL替代Freeswitch默认的SQLite数据库 以提高性能
使用MySqL替代Freeswitch默认的SQLite数据库 以提高性能
|
存储 算法 关系型数据库
MySQL(五) MySQL中的索引详讲
之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下去的心态了,原因可能是由于别人的影响,觉得对于MySQL来说,知道了一些复杂的查询,就够了,但是我认为,不管有没有用,现在学着不懂的东西,说明就是自己薄弱的地方,多学才能比别人更强
76 0