对实体 "useSSL" 的引用必须以 ';' 分隔符结尾。

噢,我的天,我需要谈谈这个。
因为这实际上是问答论坛中非常常见的陷阱。
曾经有一个兄弟在论坛上问过一个问题,为什么他写的JDBC连接字符串中不能识别useSSL参数。
当时他说是因为引用useSSL的格式不正确,最后没有分号。
我当时就笑了。
这应该从 URL 编码开始。

您应该知道,URL 中有一些特殊字符,例如 & 和 %,它们具有特殊含义。
例如,&用于分隔参数。
直接在参数值中使用这些特殊字符会导致解析错误。
就像你把门牌号和地址写在一起,邮递员就找不到你一样。

例如,有人想要创建一个参数中包含 useSSL 的 URL,然后将 SSL 设置为 false。
原网址为:
jdbc:mysql://localhost:3 3 06 /test?autoReconnect=true&useSSL=false
如果您的服务器或解析器很挑剔,它可能会将 autoReconnect=true 和 &useSSL 解释为两个单独的参数。
这就是出现问题的地方。

正确的做法是对这些特殊字符进行编码。
如上例所示,& 必须编码为 &3 8 ;。
因此,修改后的 URL 应如下所示:
jdbc:mysql://localhost:3 3 06 /test?autoReconnect=true&3 8 ;useSSL=false
这样,解析器就可以正确解析两个参数:autoReconnect=true 和 useSSL=false。

综上所述,URL编码是关键。
不应使用分号作为参数之间的分隔符,而应将特殊字符编码到其相应的 HTML 实体中。
对实体“useSSL”的引用不需要分号,可确保特殊字符被正确编码。
这个问题对于编程中最基本的URL知识来说可能有点极端,但其实是很容易被忽视的事情。
当时我不太明白,后来查了资料才明白。
这就是为什么我绝对可以告诉论坛上的其他人如何正确地做这件事。

MYSQL COUNT(*) 和 COUNT(1)你真的会用吗?

啊,这个问题我有点疑惑,不过还是想说几句。
当时刚开始使用MYSQL的时候,COUNT()和COUNT(1 )这两个函数确实让我很头疼。
我记得2 02 2 年负责这个项目的时候,这个城市的数据量很大,有几百万条。
当时我就傻眼了,不知道该用哪些功能。

后来我向一些老鸟请教,他们说MYSQL 8 .0版本以后,两个功能基本没有性能差异了。
当时我很困惑,我想:“我为什么要学习那么多?”但直到后来我才意识到这确实是真的。

COUNT() 表示无论数据是否为 ​​NULL,它都会对所有行进行计数。
COUNT(1 ),有人说它比COUNT()更快,但这种说法现在已经过时了。
在MYSQL 8 .0+版本中,这两个函数已经近乎优化,并且都是直接统计行数。

我查了官方文档,2 02 2 年官方文档说InnoDB引擎从8 .0.1 3 版本开始对COUNT()进行了优化。
没有 WHERE 或 GROUP BY,性能相当不错。
而且,InnoDB的计算机制其实是相当复杂的。
这可能会有点慢,因为它需要遍历二级索引或聚集索引。

后来我还发现了一个小窍门。
这意味着如果不需要确切的行数,可以使用 SHOW TABLE STATUS 来估计。
当数据量不是特别大的时候这个方法非常有用。

综上所述,为了更好地理解MYSQL的工作原理,你需要作为开发人员进行练习,并阅读更多的官方文档。
我在编写代码时使用 COUNT() 的原因是因为它简单、清晰、直接表达了我的意图。
至于性能,现代MYSQL已经足够强大,这些细节不会让你慢下来。