为了账号安全,请及时绑定邮箱和手机立即绑定

是否使用“SET NAMES”

是否使用“SET NAMES”

喵喵时光机 2019-09-02 11:01:05
在阅读O'Reilly的“高性能MySQL”时,我偶然发现了以下情况另一个常见的垃圾查询是SET NAMES UTF8,这是一种错误的做事方式(它不会改变客户端库的字符集;它只影响服务器)。我有点困惑,因为我曾经在每个脚本的顶部放置“SET NAMES utf8”让db知道我的查询是utf8编码的。任何人都可以评论上述引用,或者,更正式地说,您的建议/最佳实践是什么,以确保我的数据库工作流是unicode意识。如果这是相关的,我的目标语言是php和python。
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

mysql_set_charset()将是一个选择 - 但一个选项仅限于ext/mysql。对于ext/mysqli它是mysqli_set_charset和你需要指定一个连接参数。PDO::mysql


由于使用此函数会导致MySQL API调用,因此应该将其视为比发出查询快得多。


在性能方面,确保脚本和MySQL服务器之间基于UTF-8的通信的最快方法是正确设置MySQL服务器。由于SET NAMES x是等同于


SET character_set_client = x;

SET character_set_results = x;

SET character_set_connection = x;

而在SET character_set_connection = x内部也执行,SET collation_connection = <<default_collation_of_character_set_x>>您也可以静态设置这些服务器变量my.ini/cnf。


请注意在同一MySQL服务器实例上运行的其他应用程序可能存在的问题,并且需要其他一些字符集。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 619 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信