亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否使用“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 關注
  • 699 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號