日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql 建立索引的例子_mysql建立合适的索引的例子

發(fā)布時(shí)間:2024/9/27 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 建立索引的例子_mysql建立合适的索引的例子 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在mysql數(shù)據(jù)庫(kù)中,其實(shí)建索引也是一門學(xué)問,一個(gè)表中,索引并不是越多越好,而是適合你的業(yè)務(wù)才最重要。那么建立索引的時(shí)候,我們應(yīng)該從以下幾點(diǎn)去考量。

1. 索引字段越小越好,像varchar(10)肯定比text類型的效果要好。

2. 經(jīng)常需要作為where、group by、order by等條件的時(shí)候,要為該字段建立索引。

3. 當(dāng)要建立聯(lián)合索引的時(shí)候,離散度較大的列放到前面。打個(gè)比方,如果要建立一個(gè)姓名(name)和年齡(age)的聯(lián)合索引,肯定要把name放到前面(index(name,age)),因?yàn)閍ge的范圍最多不會(huì)超過0-120(全世界沒幾個(gè)人能活到120歲以上吧),而name的情況就有成千上萬(wàn)種了。放到前面的好處就是第一次就能篩掉一大批數(shù)據(jù),這樣更有利查詢的效率。

4. 只給經(jīng)常作為查詢條件的字段建立索引,因?yàn)樗饕⒉皇窃蕉嘣胶?#xff0c;多了首先會(huì)增加磁盤開銷,然后查詢的時(shí)候,mysql引擎也要去判斷該使用那個(gè)索引,再就是索引多了,對(duì)update、insert、delete的效率也會(huì)造成影響。

總之,建立索引的時(shí)候也要認(rèn)真思考,才能讓表結(jié)構(gòu)更加完美

MySQL何時(shí)使用索引

對(duì)一個(gè)鍵碼使用>, >=, =,

SELECT * FROM table_name WHERE key_part1=1 and key_part2 > 5;

SELECT * FROM table_name WHERE key_part1 IS NULL;

當(dāng)使用不以通配符開始的LIKE

SELECT * FROM table_name WHERE key_part1 LIKE 'jani%'

在進(jìn)行聯(lián)結(jié)時(shí)從另一個(gè)表中提取行時(shí)

SELECT * from t1,t2 where t1.col=t2.key_part

找出指定索引的MAX()或MIN()值

SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10

一個(gè)鍵碼的前綴使用ORDER BY或GROUP BY

SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3

在所有用在查詢中的列是鍵碼的一部分時(shí)間

SELECT key_part3 FROM table_name WHERE key_part1=1

------------------------------------------------------------------------------------------------------------------------------------

MySQL何時(shí)不使用索引

如果MySQL能估計(jì)出它將可能比掃描整張表還要快時(shí),則不使用索引。例如如果key_part1均勻分布在1和100之間,下列查詢中使用索引就不是很好:

SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90

如果使用HEAP表且不用=搜索所有鍵碼部分。

在HEAP表上使用ORDER BY。

如果不是用鍵碼第一部分

SELECT * FROM table_name WHERE key_part2=1

如果使用以一個(gè)通配符開始的LIKE

SELECT * FROM table_name WHERE key_part1 LIKE '%jani%'

搜索一個(gè)索引而在另一個(gè)索引上做ORDER BY

SELECT * from table_name WHERE key_part1 = # ORDER BY key2

總結(jié)

以上是生活随笔為你收集整理的mysql 建立索引的例子_mysql建立合适的索引的例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。