博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 特定查询条件下导致的大海捞针
阅读量:2200 次
发布时间:2019-05-03

本文共 467 字,大约阅读时间需要 1 分钟。

order表:

order type  gmt_create

 

   type 取值: 0,1  其中0非常多,1非常少.

当查询条件里

   select * from order where type=0 and gmt_create > '2017' limit 20;

由于海量数据,可能搜索1千 w 才能得到1个数据.

所以要得到20个可能就要 mysql 遍历完一个亿的数据.

 

这时候就要考虑如何用索引,一步步的查询. 一个方案是将原表分表. 根据 type 先分表.

直接分成两张表,而不是多加一个 index,导致一致性,降低插入性能. 还不如自己建两张表. 业务层分表. 两个 mybatis配置, 好维护.不然可能出错.

唯一的缺点是: 查询两种类型的数据,需要两个 sql 了. 需要 join 下. 原来一个 sql 就搞定了. 分比合在大部分场景下都要好.

有没有在一个数据库,能够区分冷热(业务规则定). 定期归档,归档

转载于:https://www.cnblogs.com/fei33423/p/7601190.html

你可能感兴趣的文章
微软宣布加入 OpenJDK,打不过就改变 Java 未来!
查看>>
MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
查看>>
为什么强烈推荐 Java 程序员使用 Google Guava 编程!
查看>>
先搞清楚这些问题,简历上再写你熟悉Java!
查看>>
【数据库】关系数据库和非关系数据库的优缺点
查看>>
【数据结构】动态顺序表
查看>>
Markdown的基础使用
查看>>
Linux基础命令
查看>>
【C语言】交换两个数值的三种方法
查看>>
【数据结构】栈的简单理解以及对栈的基本操作
查看>>
【数据结构】简单不带环迷宫的实现(用栈实现)
查看>>
【C语言】简单的了解递归(求斐波那契,n的阶乘,字符串长度,把一个整型(无符号),转化为字符型并打印出来)
查看>>
【数据结构】动态栈的实现
查看>>
【数据结构】简单的迷宫(用递归实现)
查看>>
【数据结构】队列的基本认识和队列的基本操作
查看>>
【数据结构】循环队列的认识和基本操作
查看>>
【LeetCode】无重复字符的最长子串
查看>>
时间复杂度
查看>>
【C++】动态内存管理 new和delete的理解
查看>>
【Linux】了解根目录下每个文件的作用
查看>>