国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql索引必須了解的幾個重要問題

2024-07-24 12:45:01
字體:
來源:轉載
供稿:網友

本文講述了mysql索引必須了解的幾個重要問題。,具體如下:

1、索引是做什么的?

索引用于快速找出在某個列中有一特定值的行。不使用索引,MySQL必須從第1條記錄開始然后讀完整個表直到找出相關的行。
表越大,花費的時間越多。如果表中查詢的列有一個索引,MySQL能快速到達一個位置去搜尋到數據文件的中間,沒有必要看所有數據。
大多數MySQL索引(PRIMARY KEY、UNIQUE、INDEX和FULLTEXT)在B樹中存儲。只是空間列類型的索引使用R-樹,并且MEMORY表還支持hash索引。

2、索引好復雜,我該怎么理解索引,有沒一個更形象點的例子?

有,想象一下,你面前有本詞典,數據就是書的正文內容,你就是那個cpu,而索引,則是書的目錄

3、索引越多越好?

大多數情況下索引能大幅度提高查詢效率,但:

數據的變更(增刪改)都需要維護索引,因此更多的索引意味著更多的維護成本

更多的索引意味著也需要更多的空間 (一本100頁的書,卻有50頁目錄?)

過小的表,建索引可能會更慢哦 :)  (讀個2頁的宣傳手冊,你還先去找目錄?)

4、索引的字段類型問題

text類型,也可建索引(需指定長度)

myisam存儲引擎索引鍵長度綜合不能超過1000字節

用來篩選的值盡量保持和索引列同樣的數據類型

5、like 不能用索引?

盡量減少like,但不是絕對不可用,"xxxx%" 是可以用到索引的,

想象一下,你在看一本成語詞典,目錄是按成語拼音順序建立,查詢需求是,你想找以 "一"字開頭的成語("一%"),和你想找包含一字的成語("%一%")

除了like,以下操作符也可用到索引:

<,<=,=,>,>=,BETWEEN,IN
<>,not in ,!=則不行

6、什么樣的字段不適合建索引?

一般來說,列的值唯一性太小(如性別,類型什么的),不適合建索引(怎樣叫太小?一半說來,同值的數據超過表的百分之15,那就沒必要建索引了)

太長的列,可以選擇只建立部分索引,(如:只取前十位做索引)

更新非常頻繁的數據不適宜建索引(怎樣叫非常?意會)

7、一次查詢能用多個索引嗎?

不能

8、多列查詢該如何建索引?

一次查詢只能用到一個索引,所以 首先槍斃 a,b各建索引方案
a還是b? 誰的區分度更高(同值的最少),建誰!
當然,聯合索引也是個不錯的方案,ab,還是ba,則同上,區分度高者,在前

9、聯合索引的問題?

where a = "xxx" 可以使用 AB 聯合索引
where b = "xxx" 則不可 (再想象一下,這是書的目錄?)
所以,大多數情況下,有AB索引了,就可以不用在去建一個A索引了

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清镇市| 泗水县| 文水县| 沅江市| 从江县| 林西县| 古浪县| 分宜县| 云和县| 上思县| 苏尼特左旗| 麦盖提县| 甘南县| 崇仁县| 榕江县| 建水县| 弋阳县| 北流市| 祁门县| 清流县| 嘉祥县| 旬阳县| 天台县| 正宁县| 驻马店市| 兴化市| 北海市| 蓬安县| 栾川县| 时尚| 深泽县| 三亚市| 荣成市| 平度市| 峡江县| 宁蒗| 萨迦县| 黎平县| 安塞县| 宿州市| 上高县|