下面小編就為大家帶來一篇淺談mysql的索引設計原則以及常見索引的差異。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
索引定義:是一個單獨的,儲存在磁碟上的資料庫結構,其包含著對資料表裡所有記錄的引用指標.
資料庫索引的設計原則:
為了讓索引的使用效率更高,在建立索引時,必須考慮在哪些欄位上建立索引和建立哪種類型的索引。
那麼索引設計原則又是怎麼樣的呢?
1.選擇唯一性索引
唯一性索引的值是唯一的,可以更快速的透過該索引來決定某筆記錄。
例如,學生表中學號是具有唯一性的欄位。為該欄位建立唯一性索引可以很快的確定某個學生的資訊。
如果使用姓名的話,可能有同名現象,從而降低查詢速度。
2.為經常需要排序、分組和聯合操作的字段建立索引
#經常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作會浪費很多時間。
如果為其建立索引,可以有效地避免排序操作。
3.為常作為查詢條件的欄位建立索引
如果某個欄位常用來做查詢條件,那麼該欄位的查詢速度會影響整個資料表的查詢速度。因此,
為這樣的欄位建立索引,可以提高整個表的查詢速度。
4.限制索引的數目
索引的數目不是越多越好。每個索引都需要佔用磁碟空間,索引越多,需要的磁碟空間就越大。
修改表格時,對索引的重構和更新很麻煩。越多的索引,會使更新表變得很浪費時間。
5.盡量使用資料量少的索引
如果索引的值很長,那麼查詢的速度會受到影響。例如,對一個CHAR(100)類型的欄位進行全文
檢索需要的時間肯定要比CHAR(10)類型的欄位所需的時間要多。
6.盡量使用前綴來索引
如果索引欄位的值很長,最好使用值的前綴來索引。例如,TEXT和BLOG類型的字段,進行全文檢索
會很浪費時間。如果只檢索欄位的前面的若干個字符,這樣可以提高檢索速度。
7.刪除不再使用或很少使用的索引
表中的資料被大量更新,或資料的使用方式被改變後,原有的一些索引可能不再需要。資料庫管理
員應定期找出這些索引,將它們刪除,從而減少索引對更新操作的影響。
#8.小表不應建立索引;包含大量的列並且不需要搜尋非空值的時候可以考慮不建索引
---------- ------------------------------------------------
mysql索引相關小常識:
#一、常被用來過濾記錄的字段。
1. primary key 字段, 系統自動建立主鍵的索引;
2. unique key 字段,系統自動建立對應的索引;
3. foreign key 約束所定義的作為外鍵的欄位;
4. 在查詢中用來連接表格的欄位;
5. 常用來作為排序(order by 的欄位)基準的欄位;
二、索引會佔用磁碟空間,建立不必要的索引只會形成浪費。
三、索引的建立必須考慮資料的操作方式。
1.內容很少變動,經常被查詢,為它多創建幾個索引無所謂;
2.經常性,例行變動的表而言,則需要謹慎地創建確實必要的索引;
四、primary key 和unique key的區別
##1. 作為Primary Key的域/域組不能為null。而Unique Key可以。 2. 在一個表格中只能有一個Primary Key,而多個Unique Key可以同時存在。更大的差異在邏輯設計上, Primary Key一般在邏輯設計中用作記錄標識,這也是設置
Primary Key的本來用意, 而Unique Key只是為了保證域/域組的唯一性。
五、複合索引和單一索引
複合索引是指多字段聯合索引,查詢時經常需要這幾個字段組合一起為條件再查詢
唯一索引主要是用主鍵ID索引,儲存結構順序與物理結構一致
如:create index idx on tbl(a,b)
#先按a排序, a相同的按b排序,所以當你查a或ab的時候,
能夠利用到這個索引.但當你只查b的時候,索引對你的幫助不大.可能可以跳躍查找.
-------------------------------------- -------
新增與刪除索引的情況:
#1、資料表的主鍵、外鍵必須有索引;
2、資料量超過300w的表應該有索引;
3、經常與其他表連接的表,在連接字段上應該建立索引;
4、經常出現在Where子句中的字段,特別是大表的字段,應該建立索引;
#5、索引應該建在選擇性高的字段上;
6、索引應該建在小字段上,對於大的文本字段甚至超長字段,不要建索引;
7、複合索引的建立需要進行仔細分析;盡量考慮用單一字段索引代替:
A、正確選擇複合索引中的主列字段,一般是選擇性較好的字段;
B、複合索引的幾個欄位是否經常同時以AND方式出現在Where子句中?單字段查詢是否極少甚至沒有?如果是,則可以建立複合索引;否則考慮單一欄位索引;
C、如果複合索引中包含的欄位經常單獨出現在Where子句中,則分解為多個單一欄位索引;
D、如果複合索引所包含的字段超過3個,那麼仔細考慮其必要性,考慮減少複合的字段;
E、如果既有單字段索引,又有這幾個欄位上的複合索引,一般可以刪除複合索引;
8、頻繁進行資料運算的表,不要建立太多的索引;
9、刪除無用的索引,避免對執行計劃造成負面影響;
以上是一些普遍的建立索引時的判斷依據。 一言以蔽之,索引的建立必須慎重,對每個索引的必要性都應該經過仔細分析,要有建立的依據。因為太多的索引與不充分、不正確的索引對效能都毫無益處:在表上建立的每個索引都會增加儲存開銷,索引對於插入、刪除、更新操作也會增加處理上的開銷。另外,過多的複合索引,在有單一欄位索引的情況下,一般都是沒有存在價值的;相反,還會降低資料增加刪除時的效能,特別是對頻繁更新的表來說,負面影響更大
以上是mysql的索引設計原則以及常見索引的區別的簡單介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

存儲過程是MySQL中的預編譯SQL語句集合,用於提高性能和簡化複雜操作。 1.提高性能:首次編譯後,後續調用無需重新編譯。 2.提高安全性:通過權限控制限制數據表訪問。 3.簡化複雜操作:將多條SQL語句組合,簡化應用層邏輯。

MySQL查詢緩存的工作原理是通過存儲SELECT查詢的結果,當相同查詢再次執行時,直接返回緩存結果。 1)查詢緩存提高數據庫讀取性能,通過哈希值查找緩存結果。 2)配置簡單,在MySQL配置文件中設置query_cache_type和query_cache_size。 3)使用SQL_NO_CACHE關鍵字可以禁用特定查詢的緩存。 4)在高頻更新環境中,查詢緩存可能導致性能瓶頸,需通過監控和調整參數優化使用。

MySQL被廣泛應用於各種項目中的原因包括:1.高性能與可擴展性,支持多種存儲引擎;2.易於使用和維護,配置簡單且工具豐富;3.豐富的生態系統,吸引大量社區和第三方工具支持;4.跨平台支持,適用於多種操作系統。

MySQL數據庫升級的步驟包括:1.備份數據庫,2.停止當前MySQL服務,3.安裝新版本MySQL,4.啟動新版本MySQL服務,5.恢復數據庫。升級過程需注意兼容性問題,並可使用高級工具如PerconaToolkit進行測試和優化。

MySQL備份策略包括邏輯備份、物理備份、增量備份、基於復制的備份和雲備份。 1.邏輯備份使用mysqldump導出數據庫結構和數據,適合小型數據庫和版本遷移。 2.物理備份通過複製數據文件,速度快且全面,但需數據庫一致性。 3.增量備份利用二進制日誌記錄變化,適用於大型數據庫。 4.基於復制的備份通過從服務器備份,減少對生產系統的影響。 5.雲備份如AmazonRDS提供自動化解決方案,但成本和控制需考慮。選擇策略時應考慮數據庫大小、停機容忍度、恢復時間和恢復點目標。

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

在MySQL中優化數據庫模式設計可通過以下步驟提升性能:1.索引優化:在常用查詢列上創建索引,平衡查詢和插入更新的開銷。 2.表結構優化:通過規範化或反規範化減少數據冗餘,提高訪問效率。 3.數據類型選擇:使用合適的數據類型,如INT替代VARCHAR,減少存儲空間。 4.分區和分錶:對於大數據量,使用分區和分錶分散數據,提升查詢和維護效率。

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3漢化版
中文版,非常好用