2019-06-19 mysql索引

1. distinct 去重復(fù)?

select sum(單價(jià)*數(shù)量) from (select 牌子,單價(jià),數(shù)量 from 啤酒 union all select 牌子,單價(jià),數(shù)量 from 飲料union all select 牌子,單價(jià),數(shù)量 from 礦泉水);

2.別名

2.1.表別名

SELECT a.tname ,GROUP_CONCAT(d.sname)

FROM teacher AS a

JOIN course AS b

ON a.tno = b.tno

JOIN sc as c

ON b.cno = c.cno

JOIN student AS d

ON c.sno = d.sno

WHERE a.tname='oldguo' AND c.score<60

GROUP BY a.tno;

2.2.列別名

selec count(distinct(name)) as? 個(gè)數(shù)? from? world.city;


--- 統(tǒng)計(jì)一下每個(gè)庫(kù)的真實(shí)數(shù)據(jù)量

每張表數(shù)據(jù)量=AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH

SELECT

table_schema,

COUNT(?table_name?),

SUM(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024/1024?AS?ToTAL_MB

FROM?information_schema.TABLES

GROUP?BY?table_schema;



--?information_schema

---?查詢整個(gè)數(shù)據(jù)庫(kù)中所有的庫(kù)對(duì)應(yīng)的表名

例如:

world???city

world???country

oldboy??oldguo

SELECT?table_schema,table_name

FROM?information_schema.tables;

---?查詢world和school庫(kù)下的所有表名

SELECT?table_schema,table_name

FROM?information_schema.tables

WHERE?table_schema='world'

UNION?ALL

SELECT?table_schema,table_name

FROM?information_schema.tables

WHERE?table_schema='school';

---?查詢整個(gè)數(shù)據(jù)庫(kù)中所有的庫(kù)對(duì)應(yīng)的表名,每個(gè)庫(kù)顯示成一行

SELECT?table_schema,GROUP_CONCAT(table_name)

FROM?information_schema.tables

GROUP?BY??table_schema;

---?統(tǒng)計(jì)一下每個(gè)庫(kù)下的表的個(gè)數(shù)

SELECT?table_schema,COUNT(table_name)

FROM?information_schema.tables

GROUP?BY??table_schema;

---?統(tǒng)計(jì)一下每個(gè)庫(kù)的真實(shí)數(shù)據(jù)量

每張表數(shù)據(jù)量=AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH

SELECT

SUM(AVG_ROW_LENGTH*TABLE_ROWS+INDEX_LENGTH)/1024/1024?AS?total_mb

FROM?information_schema.TABLES

---?information_schema.tables+CONCAT(),拼接命令

---?使用方法舉例

mysql>?SELECT?CONCAT(USER,"@","'",HOST,"'")?FROM?mysql.user;

---?生產(chǎn)需求1

mysqldump?-uroot?-p123??world?city?>/tmp/world_city.sql

---?模仿以上命令,對(duì)整個(gè)數(shù)據(jù)庫(kù)下的1000張表進(jìn)行單獨(dú)備份,

---?排除sys,performance,information_schema

mysqldump?-uroot?-p123??world?city?>/tmp/world_city.sql

SELECT?CONCAT("mysqldump?-uroot?-p123??",table_schema,"?",table_name,"?>/tmp/",table_schema,"_",table_name,".sql")

FROM?information_schema.tables

WHERE?table_schema?NOT?IN('sys','performance','information_schema')

INTO?OUTFILE?'/tmp/

bak.sh';

vim?/etc/my.cnf

secure-file-priv=/tmp

/etc/init.d/mysqld?restart


5.show

show databases; ##查看所有數(shù)據(jù)庫(kù)名

show tables;##查看當(dāng)前庫(kù)下的表名

show tables from world; ##查看world庫(kù)下的表名

show create database;##查看建庫(kù)語(yǔ)句

show create table; ##查看建表語(yǔ)句

show grants for root@‘localhost’; ##查看用戶的權(quán)限信息

show charset;##查看字符集

show collation;##查看校對(duì)規(guī)則

show full processlist; ##查看數(shù)據(jù)庫(kù)連接情況

show status; ##查看數(shù)據(jù)庫(kù)的整體情況

show status like '%lock' ##模糊查詢數(shù)據(jù)庫(kù)的整體情況

show variables; ##查看數(shù)據(jù)庫(kù)的所有變量情況

show variables like ‘innodb’;##查看數(shù)據(jù)庫(kù)的所有變量情況

show engine; ##查看所有支持存儲(chǔ)引擎狀態(tài)

show engine innodb status; ##查看所有indodb存儲(chǔ)引擎狀態(tài)情況

show binary logs;##查看二進(jìn)制日志情況

show binlog events in ##查看二進(jìn)制日志事件

show relaylog events in ##查看relay日志事件

show slave status ##查看從庫(kù)狀態(tài)

show master status ##查看數(shù)據(jù)庫(kù)binlog位置信息

show index from ##查看表的索引情況????


6.索引

6.1 索引的作用

提供了類似于書中目錄的作用,目的是為了優(yōu)化查詢

6.2 索引的種類算法

B樹索引

Hash索引

R樹

Full text

GIS

6.3 B樹算法普及

B-樹

B+樹


B*樹


6.4 在功能上的分類*****

6.4.1 輔助索引(s)怎么構(gòu)造B樹結(jié)構(gòu)?

1)輔助索引是基于表的列生成的

2)取出索引列的所有值(取出所有鍵值)

3)進(jìn)行所有鍵值的排序

4)將所有鍵值按順序落到Btree索引的葉子節(jié)點(diǎn)上

5)進(jìn)而生成枝節(jié)點(diǎn)和根節(jié)點(diǎn)

6)葉子節(jié)點(diǎn)除了儲(chǔ)存鍵值以外還會(huì)生成指向原表內(nèi)容的指針。

6.4.2 聚集索引(c)怎么構(gòu)建B樹結(jié)構(gòu)?

1)一般情況下是主鍵

2)表中進(jìn)行數(shù)據(jù)存儲(chǔ),會(huì)按照ID列的順序,有序的存儲(chǔ)一行一行的數(shù)據(jù)到數(shù)據(jù)頁(yè)上(這個(gè)動(dòng)作叫聚集組織索引表)

3)表中的數(shù)據(jù)頁(yè)被作為聚集索引的葉子節(jié)點(diǎn)

4)把葉子節(jié)點(diǎn)的主鍵值生成上層枝節(jié)點(diǎn)和根節(jié)點(diǎn)。


6.4.3? 聚集索引和輔助索引構(gòu)成區(qū)別總結(jié)

聚集索引只能有一個(gè),非空唯一,一般是主鍵

輔助索引可以有多個(gè),是配合聚集索引使用的

聚集索引葉子節(jié)點(diǎn),就是磁盤的數(shù)據(jù)行存儲(chǔ)的數(shù)據(jù)頁(yè)

mysql是根據(jù)聚集索引,組織存儲(chǔ)數(shù)據(jù),數(shù)據(jù)存儲(chǔ)時(shí)就是按照聚集索引的順序進(jìn)行存儲(chǔ)數(shù)據(jù)

輔助索引,只會(huì)提取索引鍵值,進(jìn)行自動(dòng)排序的生成B樹結(jié)構(gòu)

6.5 輔助索引細(xì)分

單列的輔助索引

聯(lián)合多列輔助索引(覆蓋索引)

唯一索引


6.6 關(guān)于索引樹的高度受什么影響?

1)數(shù)據(jù)行多

2)索引列字符長(zhǎng)度,前綴索引

3)char? varchar ,表設(shè)計(jì)

4)enum 優(yōu)化索引高度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容