淺談Mysql常見註意事項一

来源:https://www.cnblogs.com/aibianchengya/archive/2022/10/07/16760001.html
-Advertisement-
Play Games

一、CentOS 7.9 安裝 redis-6.2.0 1 下載地址:https://download.redis.io/releases/redis-6.2.0.tar.gz 2 安裝gcc來進行編譯 Redis 由 C語言編寫,所以需要系統中有 gcc 編譯器 使用 gcc --version  ...


淺談Mysql常見註意事項一

  1. 不要在Mysql中使用utf8

    Mysql中utf8並不是真正意義上的utf8,而是指的是utf8mb3,這種字元集僅支持BMP字元,碼位在0到65535之間,不支持一些補充字元,例如一些生僻字和emoji表情。utf8mb3是Mysql早期就支持的字元集,由於不支持補充字元,Mysql在5.5.3之後的版本裡面增加了utf8mb4的編碼。在未來Mysql版本中,可能會刪除utf8mb3字元集。utf8mb4支持BMP和補充字元,對於BMP字元,utf8mb4和utf8mb3相同,但是對於補充字元,utf8mb4需要4個位元組存儲,utf8mb3每個字元最多使用3個位元組,無法存儲該字元,所以在創建表,使用utf8mb4,而不是utf8或者utf8mb3。

    字元集 支持的字元 每個字元存儲需要的位元組
    utf8mb3、utf8(deprecated) BMP 1~3位元組
    ucs2 BMP 2位元組
    utf8mb4 BPM和補充字元 1~4位元組
    utf16 BMP和補充字元 2位元組或4位元組
    utf16le BMP和補充字元 2位元組或4位元組
    utf32 BMP和補充字元 4位元組

    Mysql官方文檔說明:https://dev.mysql.com/doc/refman/8.0/en/charset-unicode.html

  2. 小數類型使用decimal

    推薦使用decimal,不建議使用float和double,float和double會有精度丟失的問題,並且在比較值或者進行減法運算時可能會出現問題。decimal是定點數,在MySQL中,定點數是以字元串形式存儲,所以在精度要求比較高時,推薦使用decimal類型。如果存儲的數據超出decimal訪問時,可以將數據按照整數和小數分開存儲。

    數據類型 說明 存儲位元組
    float 單精度浮點數 4個位元組
    double 雙精度浮點數 8個位元組
    decimal(M, D),M預設值是10 壓縮的"嚴格"定點數 根據M和D而定

    官網decimal存儲位元組表格

    Leftover Digits Number of Bytes
    0 0
    1-2 1
    3-4 2
    5-6 3
    7-9 4

    decimal存儲位元組計算:Mysql是將每9位十進位存儲為4個位元組。

    例如:以官網例子為例

    decimal(18, 9):小數部分是9,需要4個位元組,整數部分也是9,也需要4個位元組。

    decimal(20, 6): 小數部分是6,需要3個位元組,整數部分是14,14-9=5,整數部分需要4個位元組+剩餘的5個存儲需要的3個位元組。

  3. 推薦統計值使用count(*)

    在阿裡JAVA開發手冊中推薦使用count(*),不要使用count(列名),count(常量)。count(列名)會查詢符合條件的並且列的值不為NULL的行數,也就是說會過濾掉列為NULL的行,除非有特殊的需求,所以一般不要使用。count(*)在MySQL8.0.13之後對SELECT COUNT(*) FROM tbl_name進行了優化,效率得到提升。InnoDB引擎count(*)和count(1)其實是一樣的,不存在誰快誰慢的問題,不過推薦使用count(*),符合SQL92定義的標準統計行數的語法。以下附上官網關於count(*)的說明及鏈接,感興趣的小伙伴可以研究研究官方文檔。

    MySQL官方文檔說明:https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_count

    As of MySQL 8.0.13, SELECT COUNT(*) FROM tbl_name query performance for InnoDB tables is optimized for single-threaded workloads if there are no extra clauses such as WHERE or GROUP BY.

    InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference.

原文鏈接:https://monkey.blog.xpyvip.top/archives/qian-tan-mysql-chang-jian-zhu-yi-shi-xiang-yi


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Arnold 是一款先進的蒙特卡洛光線追蹤渲染器,專為動畫長度和視覺效果的需求而打造。C4DtoA 4.4.0 使用 Arnold 7.1.3.1 , 是一個功能版本,帶來了對 Cinema 4D 2023 中 OCIO 顏色管理的支持、對 OSL 元數據支持的改進和一些錯誤修複。不再支持 Cine ...
  • 關於 LOAD segment with RWX permissions 警告, 這是 Binutils 2.39 引入的一個新的安全類型的警告, GCC在升級版本時會帶著新版本的 Binutils 一起發佈. 如果要消除這個警告, 要麼修改ld文件, 要麼屏蔽掉它. ...
  • KVM虛擬化 虛擬化介紹 虛擬化:在一臺電腦上虛擬出多個邏輯的電腦,而且每個邏輯電腦 它可以是不同操作系統 虛擬化技術:可以擴大硬體容量,單個cpu模擬出多個cpu並行, 允許一個平臺上同時運行多個操作系統,應用程式都可以在相互獨立 的空間內運行,而且互不影響。 為什麼企業使用虛擬化技術 1、 ...
  • 想象你的電腦上跑著機器學習,但是你又想聽歌,但是你的電腦只有一個CPU,如果把所有的CPU資源都拿去跑機器學習的話,你必須等程式跑完之後才能聽歌。但是現實是,你可以在機器學習程式運行的時候放著自己喜歡的歌,甚至還可以打開微信聊天。這就是操作系統一個很重要的功能,那就是操作系統需要支持多個進程同時 ...
  • 痞子衡嵌入式半月刊: 第 64 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回顧 ...
  • 事務 四大屬性 1,原子性:事務是一個完整的整體,要麼都執行,要麼都不執行 2,一致性:當事務完成時,數據必須處於一致狀態 3,隔離性:對數據修改的所有併發事務是彼此隔離的,即事務必須是獨立的,不應以任何方式依賴於或影響其他 4,永久性:事務完成後,對資料庫的操作永久保留 事務控制 BEGIN:開始 ...
  • MySQL約束 基本介紹 約束用於確保資料庫的數據滿足特定的商業規則 在mysql中,約束包括:not null,unique,primary key,foreign key 和check 5種 1.primary key(主鍵) 欄位名 欄位類型 primary key 用於唯一地標識表行的數據, ...
  • 一、什麼是關係型和非關係型資料庫,兩者都包含那種資料庫 1、關係型資料庫 關係型資料庫是指採用了關係模型來組織數據的資料庫。簡單來說,關係模式就是二維表格模型。 常見關係型資料庫管理系統(ORDBMS): Oracle、MySql、Microsoft SQL Server、 SQLite、Postg ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...