数据库优化
孑孓独活
年轻的小猿
展开
-
sql分页查询越往后越慢
背景我们在开发的过程中使用分页是不可避免的,通常情况下我们的做法是使用limit加偏移量:select * from table where column=xxx order by xxx limit 1,20。当数据量比较小时(100万以内),无论你翻到哪一页,性能都是很快的。如果查询慢,只要在where条件和order by 的列上加上索引就可以解决。但是,当数据量大的时候(小编遇到的情况是500万数据),如果翻到最后几页,即使加了索引,查询也是非常慢的,这是什么原因导致的呢?我们该如何解决呢原创 2021-10-18 11:02:01 · 2739 阅读 · 0 评论 -
mysql先链表再查询和先查询再链表的区别
test1表idname1ruan2zhangtest2表idtest1_id1122进行链表第一种:先全链表再筛选第二种:先筛选再链表会发现第一中没了所以链表的时候如果想保持主表的数据 同时还要筛选从表的数据,应该先筛再链表这样的好处:1:减少链表次数,提高效率2:避免把主表数据筛选没了,因为把查询条件写在最后,链表的结果相当于一张表了,链表的执行顺序高于where...原创 2021-05-18 11:06:25 · 953 阅读 · 1 评论 -
数据库同一列插入多行值分别取出问题/行列转换
数据库同一列插入多行值分别取出问题/行列转换问题描述:同一列比如time,存放了早晨、中午、晚上,首先这样设计数据库存在不合理,在取这三个时间节点的数据时,需要取三次,根据where条件筛选,再将结果自连接合并。说白了,常规思路,就是自连接三次,我们知道,多次表连接这样势必造成效率低下。所以这里用到了行列转换,将行里的中午,早晨、晚上,转换成列,进行查询,并将结果返回。备注:concat进行字段的拼接,默认使用”,”进行拼接注意一点,由于进行了一对多的连表查询,从表数据是两条,所以多了一倍,这里进行了原创 2021-01-19 09:52:29 · 222 阅读 · 0 评论 -
2020-12-01
MYSQL优化之多结果集连接场景,设计表的结构将多个条件存在一个字段里了,需要根据不同的值,返回不同的字段,比如是1,新建一个字段是语文,是2新建一个字段是数学,不同于case when所以我的sql思路是根据不同的where条件区分,分多次查询,最后将所有的结果集进行连表,在数据量少的时候没事,但是上了一万之后不行了,按理来说两个一万条数据表连接查询,也就是毫秒,为啥将两个结果集进行连接之后会达到两秒暂时没弄明白,或许和mysql临时内存有关系。解释执行之后,基本的索引也都用了,实在是找不到解决方原创 2020-12-01 16:53:24 · 71 阅读 · 0 评论