QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

我们如何设计查询SQL多表联查查询出来的结果为其逻辑

泡沫乐园 2022-05-23 09:23

MySQL详细讲解如何优化查询条件

前言

技术能解决的都变成技术了

技术解决不了的是需求

状态

假设我们目前有两个表

业务表书(t_a_book)阅读历史表(t_r_book_history)用户表

它的两个表数据逻辑如下

t_a_book

t_r_book_history

t_a_user

当然,我们假设当前的数据量不仅仅是我们眼前看到的数据,而是网上的真实情况。

每张桌子至少开始10w+

问题 1

这时候模糊查询是什么意思,我们需要面对第一个业务问题,

我们需要做一个报表,显示用户阅读书籍的记录,并显示用户名、用户号、书名

此时我们如何设计查询SQL

多表连接查询

p>

SELECT * FROM t_r_book_history bh 
	LEFT JOIN t_a_user u ON bh.user_id = u.id 
	LEFT JOIN t_a_book b ON bh.book_id = b.id 
WHERE 
	bh.record_flag = 1 
ORDER BY bh.release_time DESC LIMIT 10;

查询的结果是

逻辑是

单表查询

如果此时我们选择简化复杂度,使用单表查询方式查询数据,其SQL为

SELECT * FROM t_r_book_history bh 
WHERE 
	bh.record_flag = 1 
ORDER BY bh.release_time DESC LIMIT 10;
// 用户信息
SELECT * FROM t_a_user u WHERE u.id IN ();
// 图书信息
SELECT * FROM t_a_books b WHERE u.id IN ();

数据逻辑与多表联合查询一致,唯一不同的是需要查询3次

结论

我们可以看一下,目前两种查询方式的逻辑。

主要流量压力在表t_r_book_history

当数据量很大时,我们只需要根据release_time进行索引,就可以简化这一步的操作。

模糊查询是什么意思_词组模糊查询_模糊查询和精确查询

主键可以用来简化后面的操作

从这个角度来看,这两种说法在本质上并没有明显的区别

问题 2

现在我们需要添加两个查询条件

如果这个时候,我们怎么写SQL

多表连接查询

如果我们用多表联合查询的思想来填SQL

SELECT * FROM t_r_book_history bh 
	LEFT JOIN t_a_user u ON bh.user_id = u.id 
	LEFT JOIN t_a_book b ON bh.book_id = b.id 
WHERE 
	bh.record_flag = 1 
	AND 
	b.name like "四%"
	and u.name like "张%"
ORDER BY bh.release_time DESC LIMIT 10;

显示数据

它的逻辑是

单表查询

SELECT * FROM t_a_user WHERE user_name LIKE "张%"
SELECT * FROM t_a_book WHERE user_name LIKE "四%"
SELECT * FROM t_r_book_history bh 
WHERE 
	bh.record_flag = 1 
ORDER BY bh.release_time DESC LIMIT 10;
// 用户信息
SELECT * FROM t_a_user u WHERE u.id IN ();
// 图书信息
SELECT * FROM t_a_books b WHERE u.id IN ();

查询逻辑与多表联合查询一致

问题

现在主要的问题是t_a_user、t_a_book、t_r_book_history这三个表都是大表,

我们使用的查询条件也很模糊

简单也就是说,无论我们使用哪种方法,都可能有数十万个匹配结果

因此,无论我们使用哪种方法,这条SQL都不可行

如何解决

文章写到这里,我们会发现这个问题,不能再是技术问题了。

所以只能修改需求

我们这里的问题是这两张表的查询条件。他很模糊,我们不能把范围限制在几个、几十个甚至几百个。

在这种情况下,我们只能告诉需求方模糊查询是什么意思,这个查询条件必须使用非常“清晰”的数据

比如对于用户来说,我们经常可以用什么来明确指出用户呢?

id、数据主键、手机号

我们如何确定一本书?我们可以使用 ISBN

修改这两个查询条件,将这个无法解决的问题变成解决方案

但是,有人说我们是技术。我想不出产品,

但我想说,你以后查卡半分钟的时候要说,说服大家这事不关我的事

或者说,在产品开发之前说服产品

关于如何在MySQL中优化查询条件的文章介绍到此为止。更多相关MySQL查询条件,请搜索编程宝库之前的文章,希望以后支持编程宝库。 !

下一节:Mysq详细讲解如何解决库存并发MySQL教程

面临的问题 长话短说,假设我们面临以下需求商品,库存有 2000 件,直到售完为止。今天的卖货只允许卖100。如何执行我提出的方案也很简单,采用乐观锁定的方法。以下是具体计划——...

相关文章