mysql杂项

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL
Mysql常用语法总结
Mysql常用语法总结
|
2月前
|
存储 SQL 关系型数据库
【mysql】mysql中的数据类型知多少?
【mysql】mysql中的数据类型知多少?
|
2月前
|
SQL 关系型数据库 MySQL
【mysql】mysql命令使用大全,你想要的都在这里
【mysql】mysql命令使用大全,你想要的都在这里
|
2月前
|
关系型数据库 MySQL 程序员
Mysql常用语法
Mysql常用语法
|
2月前
|
关系型数据库 MySQL
mysql一些常用语法
mysql一些常用语法
|
11月前
|
SQL 关系型数据库 MySQL
MySQL的使用——【初识MySQL】第二节
MySQL的使用——【初识MySQL】第二节
63 0
|
SQL 关系型数据库 MySQL
软件开发入门教程网之 MySQL 管理 MySQL ALTER命令 MySQL 复制表 MySQL 连接 MySQL 创建数据库 MySQL 创建数据表 MySQL 数据类型 MySQL 导出数据 M
MySQL 表中使用INSERT INTOSQL语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 ​​语法​​
|
关系型数据库 MySQL
mysql的having 语法
mysql的having 语法
84 0
mysql的having 语法
|
关系型数据库 MySQL 存储
mysql常用语法
查看数据库连接 select * from information_schema.PROCESSLIST; 查询当前库中表是否存在 select count(*) from information_schema.
808 0
|
SQL Web App开发 关系型数据库
PostgreSQL 与 MySQL 常用命令对照
有很多 MySQL 的用户在使用 PostgreSQL 时,对于 PostgreSQL 客户端(`psql`)的常用命令不是很熟悉,有时甚至会感到困惑,在此罗列 MySQL 客户端 `mysql` 与 PostgreSQL 客户端 `psql` 常用命令的对照关系,方便大家参考。
2483 0