谁再说MySQL难学,我一篇文章就丢过去

EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表 是如何被搜索和排序的……等等,等等。

挑一个你的 SELECT 语句(推荐挑选那个最复杂的,有多表联接的),把关键 字 EXPLAIN 加到前面。你可以使用 phpmyadmin 来做这个事。然后,你会看到一 张表格。下面的这个示例中,我们忘记加上了 group_id 索引,并且有表联接:

当我们为 group_id 字段加上索引后:

我们可以看到,前一个结果显示搜索了 7883 行,而后一个只是搜索了两个 表的 9 和 16 行。查看 rows 列可以让我们找到潜在的性能问题。

3. 当只要一行数据时使用 LIMIT 1

当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能 需要去 fetch 游标,或是你也许会去检查返回的记录数。

在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MyS 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 QL 数据库引擎 会在找到一条数据后停止搜索,而不是继续往后查找下一条符合记录的数据。

下面的示例,只是为了找一下是否有“中国”的用户,很明显,后面的会 比前面的更有效率。(请注意,第一条中是 Select *,第二条是 Select 1)

4. 为搜索字段建索引

索引并不一定就是给主键或是唯一的字段。如果在你的表中,有某个字段 你总要会经常用来做搜索,那么,请为其建立索引吧。

从上图你可以看到那个搜索字串 “last_name LIKE ‘a%’”,一个是建了 索引,一个是没有索引,性能差了 4 倍左右。

另外,你应该也需要知道什么样的搜索是不能使用正常的索引的。例如, 当你需要在一篇大的文章中搜索一个词时,如: “WHERE post_content LIKE ‘%apple%’”,索引可能是没有意义的。你可能需要使用 MySQL 全文索引 或 是自己做一个索引(比如说:搜索关键词或是 Tag 什么的)

5. 在 Join 表的时候使用相当类型的例,并将其索引

如果你的应用程序有很多 JOIN 查询,你应该确认两个表中 Join 的字段是 被建过索引的。这样,MySQL 内部会启动为你优化 Join 的 SQL 语句的机制。

而且,这些被用来 Join 的字段,应该是相同的类型的。例如:如果你要把 DECIMAL 字段和一个 INT 字段 Join 在一起,MySQL 就无法使用它们的索引。对 于那些 STRING 类型,还需要有相同的字符集才行。(两个表的字符集有可能不 一样

![](https://imgconvert.csdnimg.cn/aHR0cDovL3A5LXR0LmJ5dGVpbWcuY29tL2xhcmdlL3BnYy1pbWFnZS9lZjVkZmQzMmYzNjE0MzlhYjcx Java开源项目【ali1024.coding.net/public/P7/Java/git】 ZmU2YmFmMTMzOGIzZA?x-oss-process=image/format,png)

6. 千万不要 ORDER BY RAND()

分享

这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Cloud实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

Spring Boot实战

薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
2432)]

Spring Boot实战

[外链图片转存中…(img-lY1iULxA-1650018962433)]

面试题整理(性能优化+微服务+并发编程+开源框架+分布式)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值