mysql杂项

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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
目录
相关文章
|
7月前
|
关系型数据库 MySQL
Mysql常用语法总结
Mysql常用语法总结
|
2月前
|
关系型数据库 MySQL 数据库
MySQL的语法知识
MySQL的语法知识
19 4
|
2月前
|
存储 SQL 关系型数据库
mysql用法
mysql用法
41 4
|
3月前
|
SQL 关系型数据库 MySQL
mysql的语法
mysql的语法
32 1
|
3月前
|
SQL 关系型数据库 MySQL
MySQL的用法
MySQL的用法
55 1
|
7月前
|
关系型数据库 MySQL 程序员
Mysql常用语法
Mysql常用语法
|
7月前
|
关系型数据库 MySQL
mysql一些常用语法
mysql一些常用语法
|
存储 关系型数据库 MySQL
MySQL中的@i:=@i+1用法详解
MySQL中的@i:=@i+1用法详解
331 0
|
存储 SQL 数据库
mySQL-简易用法(三)
1.数据库的基本概念 数据库的英文单词: DataBase 简称 : DB 2.what 什么数据库 用于存储和管理数据的仓库。 3.数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQL
177 0
mySQL-简易用法(三)
|
SQL 存储 关系型数据库
mySQL-简易用法(二)
1.数据库的基本概念 数据库的英文单词: DataBase 简称 : DB 2.what 什么数据库 用于存储和管理数据的仓库。 3.数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQL
195 0
mySQL-简易用法(二)