方法
創(chuàng)新互聯(lián)服務(wù)項目包括南宮網(wǎng)站建設(shè)、南宮網(wǎng)站制作、南宮網(wǎng)頁制作以及南宮網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,南宮網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到南宮省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
(1) 根據(jù)需求找到關(guān)聯(lián)表
(2)找到關(guān)聯(lián)條件
重點的表tables
* 需求1:統(tǒng)計world庫下有幾個表
需求2:統(tǒng)計所有庫下表的個數(shù)
需求3:統(tǒng)計每個庫的總數(shù)據(jù)大小
--單表占空間:AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH
什么使索引:索引其實就是一種算法
BTree
HASH
Rtree
Fulltext
輔助索引
輔助索引只提取索引列作為葉子節(jié)點
聚集索引
聚集索引提取整行數(shù)據(jù)作為葉子節(jié)點
1、輔助索引和聚集索引最大的區(qū)別就在于葉子節(jié)點,枝節(jié)點和根節(jié)點原理相同
2、輔助索引會記錄主鍵值,一般情況(除等值查詢),最終都會通過聚集索引(主鍵)來找到需要的數(shù)據(jù)
第二種
一般經(jīng)常用來查詢的列作為索引
索引可以有多個,但是索引名不可重名
第一種:單列索引
第二種:前綴索引
前綴索引只能應用到字符串列,數(shù)字列不能用前綴索引
聯(lián)合索引說明:如果在一個表內(nèi)對A、B、C三個列創(chuàng)建聯(lián)合索引那么創(chuàng)建索引將按照如下情況創(chuàng)建索引表:
A
AB
ABC
======================================================
(1)查詢列無索引
(2)語句不符合走走索引條件
(3)需要查看全表
即把有索引的列全便利一遍
、 、 =、 =、 like、 between and 在范圍掃描中,這些會受到B+tree索引葉子節(jié)點上額外的優(yōu)化,因為這些是連續(xù)取值的
or、in 這兩個不是連續(xù)的取值,所以不能受到B+tree索引的額外優(yōu)化,使用時相當于Btree索引
!=、 not in 只有在主鍵列才走索引也是range級別
(1)、 、 =、 =、 like、 between and
(2)or、in
(3)!=、 not in
多表連接查詢,非驅(qū)動表連接條件是主鍵或唯一鍵
一般多表查詢的時,最左側(cè)的表為驅(qū)動表,右側(cè)的為非驅(qū)動表,下邊的例子中country標為非驅(qū)動表
7.1.1 數(shù)字類型
7.1.2 字符串類型:
字符集
中文
gbk 2字節(jié)
utf8 3字節(jié)
utf8mb4 4字節(jié)
utf8mb4 為例:
舉例(1)聯(lián)合索引等值查詢
舉例(2) 聯(lián)合索引中有不等值查詢
如果Extra列出現(xiàn)Using temporary、Using filesort,兩項內(nèi)容,那么考慮以下語句的問題。
group by
order by
distinct
join on
union
一共3張表 knowledge , knowledge_question , knowledge_answer ,數(shù)據(jù)在 6000~10000 之間。
執(zhí)行的語句:
執(zhí)行時間約 10分鐘 ,查看執(zhí)行計劃如下:
全部都是全表掃描,根據(jù)MySQL聯(lián)表查詢的算法 Nested-Loop Join ,MySQL查詢的結(jié)果集是3張表的笛卡爾積,所以效率特別低。
耗時變成 20毫秒
給Where條件建立索引,并不一定會使用。
比如:在表 knowledge 的字段 update 上建立索引 idx_time :
結(jié)果執(zhí)行上來看,并沒有使用索引 idx_time 。
如果where條件從 k.update_time'2019-01-03 12:00:00' 修改為 k.update_time='2019-01-03 12:00:00' (從 變成 = )
則會使用索引 idx_time
在建立索引的時候,會遇到 Table Metadata Lock 的問題,可以先 show processlist ,找到占用表鎖的連接,然后 kill 。
顯示一個表所有索引的SQL語句是:
show index from 數(shù)據(jù)庫名.表名
查看某表某一列上的索引使用下面的SQL語句:
show index from 數(shù)據(jù)庫名.表名 where column_name like '列名'
下面的SQL語句在我的數(shù)據(jù)庫上執(zhí)行成功:
show index from web.clubuser where column_name like 'user'。
Mysql多表聯(lián)合索引:
1、多表聯(lián)合索引在查詢語句中能加速查詢速度。select * from table1,table2 where table1.id = table2.id。
2、多表聯(lián)合的索引的sql語法,一個user表有4個字段 id name age sex,分別給name age sex建立三個單獨的索引,此時建立create index name_age_sex on user(name,age,sex)這個新建立的索引跟前面那三個是獨立的。就是說又新建立了空間存儲這個新索引。
3、索引的維護主要包括定期清理數(shù)據(jù)碎片。
分享名稱:mysql怎么走索引查詢 mysql怎么使用索引查詢
文章位置:http://jinyejixie.com/article34/dosdhse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、App開發(fā)、面包屑導航、服務(wù)器托管、網(wǎng)頁設(shè)計公司、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)