首頁 資料庫 mysql教程 mysql中索引使用一些优化方法与注意事项

mysql中索引使用一些优化方法与注意事项

Jun 07, 2016 pm 05:51 PM
mysql優化 mysql索引

本文章是从网上收集了大量的关于怎么用mysql中的索引来优化自己民的数据库吧,同时也介绍了索引列一些不能出现的情况等。

下边是在网上找到的一些资料,保留下来备用吧

1,创建索引
对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引会引起致命的性能下降。但是也不是什么情况都非得建索引不可,比如性别可能就只有两个值,建索引不仅没什么优势,还会影响到更新速度,这被称为过度索引。

2,复合索引
比如有一条语句是这样的:

 代码如下 复制代码
* from users where area=’beijing’ and age=22;

如果我们是在area和age上分别创建单个索引的话,由于查询每次只能使用一个索引,所以虽然这样已经相对不做索引时全表扫描提高了很多效率,但是如果在area、age两列上创建复合索引的话将带来更高的效率。如果我们创建了(area, age, salary)的复合索引,那么其实相当于创建了(area,age,salary)、(area,age)、(area)三个索引,这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

3,索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在设计时不要让字段的默认值为NULL。

4,使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

5,排序的索引问题
mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

6,like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。

7,不要在列上进行运算

 代码如下 复制代码
select * from users where YEAR(adddate)

将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成

 代码如下 复制代码

select * from users where adddate

8,不使用NOT IN和操作

NOT IN和操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id3则可使用id>3 or id

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

mysql索引失效的幾種情況 mysql索引失效的幾種情況 Feb 21, 2024 pm 04:23 PM

常見情況:1、使用函數或運算;2、隱式類型轉換;3、使用不等於(!=或<>);4、使用LIKE操作符,並以通配符開頭;5、OR條件;6、NULL值;7、索引選擇性低;8、複合索引的最左前綴原則;9、優化器決策;10、FORCE INDEX和IGNORE INDEX。

如何透過MySQL對AVG函數最佳化來提高效能 如何透過MySQL對AVG函數最佳化來提高效能 May 11, 2023 am 08:00 AM

如何透過MySQL對AVG函數最佳化來提高效能MySQL是一款流行的關聯式資料庫管理系統,其中包含了許多強大的函數以及功能。其中AVG函數被廣泛使用在計算平均值的情形,但由於這個函數需要遍歷整個資料集,所以在大規模資料的情況下會導致效能問題。本文將詳細介紹如何透過MySQL對AVG函數進行最佳化,進而提高效能。 1.使用索引索引是MySQL最佳化中最重要的一部分,

mysql索引什麼情況下會失效 mysql索引什麼情況下會失效 Aug 09, 2023 pm 03:38 PM

mysql索引在不使用索引列進行查詢、資料類型不符、前綴索引的使用不當、使用函數或表達式進行查詢、索引列的順序不正確、資料更新頻繁和索引過多或過少情況下會失效。 1、不使用索引列進行查詢,為了避免這種情況,應在查詢中使用適當的索引列;2、資料類型不匹配,在設計表結構時,應確保索引列和查詢的資料類型匹配;3 、前綴索引的使用不當,可使用前綴索引。

MySQL索引左前綴匹配規則 MySQL索引左前綴匹配規則 Feb 24, 2024 am 10:42 AM

MySQL索引最左原則原理及程式碼範例在MySQL中,索引是提高查詢效率的重要手段之一。其中,索引最左原則是我們在使用索引來優化查詢的過程中需要遵循的一個重要原則。本文將圍繞MySQL索引最左原則的原理進行介紹,並給出一些具體的程式碼範例。一、索引​​最左原則的原理索引最左原則是指在一個索引中,如果查詢條件是由多個列組成的,那麼只有按照索引中的最左側列進行查詢,才能充

mysql索引的分類有哪幾種 mysql索引的分類有哪幾種 Apr 22, 2024 pm 07:12 PM

MySQL 索引分為以下類型:1. 普通索引:匹配值、範圍或前綴;2. 唯一索引:確保值唯一;3. 主鍵索引:主鍵列的唯一索引;4. 外鍵索引:指向另一表主鍵;5. 全文索引:全文搜尋;6. 雜湊索引:相等配對搜尋;7.空間索引:地理空間搜尋;8. 複合索引:基於多個欄位的搜尋。

說明不同類型的MySQL索引(B樹,哈希,全文,空間)。 說明不同類型的MySQL索引(B樹,哈希,全文,空間)。 Apr 02, 2025 pm 07:05 PM

MySQL支持四種索引類型:B-Tree、Hash、Full-text和Spatial。 1.B-Tree索引適用於等值查找、範圍查詢和排序。 2.Hash索引適用於等值查找,但不支持範圍查詢和排序。 3.Full-text索引用於全文搜索,適合處理大量文本數據。 4.Spatial索引用於地理空間數據查詢,適用於GIS應用。

與MySQL中使用索引相比,全表掃描何時可以更快? 與MySQL中使用索引相比,全表掃描何時可以更快? Apr 09, 2025 am 12:05 AM

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

PHP與MySQL索引的資料更新和索引維護的效能最佳化策略及其對效能的影響 PHP與MySQL索引的資料更新和索引維護的效能最佳化策略及其對效能的影響 Oct 15, 2023 pm 12:15 PM

PHP與MySQL索引的資料更新和索引維護的效能最佳化策略及其對效能的影響摘要:在PHP與MySQL的開發中,索引是最佳化資料庫查詢效能的重要工具。本文將介紹索引的基本原理和使用方法,並探討索引對資料更新和維護的效能影響。同時,本文也提供了一些效能優化策略和具體的程式碼範例,幫助開發者更好地理解和應用索引。索引的基本原理和使用方法在MySQL中,索引是一種特殊的數

See all articles