MySQL系列:性能优化
1. 優(yōu)化簡(jiǎn)介
MySQL性能優(yōu)化包括:查詢優(yōu)化、數(shù)據(jù)庫(kù)結(jié)構(gòu)優(yōu)化、MySQL服務(wù)器優(yōu)化等。
2. 查詢優(yōu)化
2.1 分析查詢語(yǔ)句
MySQL提供EXPLAIN和DESCRIBE,用來(lái)分析查詢語(yǔ)句。
EXPLAIN語(yǔ)句的基本語(yǔ)法:
EXPLAIN [EXTENDED] SELECT select_options其中,EXTENDED用于EXPLAIN產(chǎn)生附加信息,select_options是SELECT語(yǔ)句的查詢選項(xiàng),包括FROM WHERE子句等。
mysql> EXPLAIN SELECT * FROM product; +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+ | 1 | SIMPLE | product | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | NULL | +----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+其中,
id:SELECT識(shí)別符,SELECT的查詢序列號(hào)。
select_type:SELECT語(yǔ)句的類型。
取值包括:
(1)SIMPLE:簡(jiǎn)單查詢,不包括連接查詢和子查詢
(2)PRIMARY:主查詢,或最外層的查詢語(yǔ)句
(3)UNION:連接查詢的第2個(gè)或后面的查詢語(yǔ)句
(4)DEPENDENT UNION:連接查詢中的第2個(gè)或后面的SELECT語(yǔ)句,取決于外面的查詢
(5)UNION RESULT:連接查詢的結(jié)果
(6)SUBQUERY:子查詢中的第1個(gè)SELECT語(yǔ)句
(7)DEPENDENT SUBQUERY:子查詢中的第1個(gè)SELECT,取決于外面的查詢
(8)DERIVED:導(dǎo)出表的SELECT(FROM子句的子查詢)
table:查詢的表
type:表的連接類型
表的連接類型從最佳到最差順序:
(1)system:該表是僅有一行的系統(tǒng)表,是const連接類型的一個(gè)特例。
(2)const:數(shù)據(jù)表最多只有一個(gè)匹配行,const表查詢速度很快,因?yàn)橹蛔x取一次。
const用于使用常量值比較PRIMARY KEY或UNIQUE索引場(chǎng)合。
mysql> EXPLAIN SELECT * FROM product WHERE id = 1; +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+ | 1 | SIMPLE | product | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 | 100 | NULL | +----+-------------+---------+------------+-------+---------------+---------+---------+-------+------+----------+-------+(3)eq_ref:用在一個(gè)索引的所有部分被連接使用并且索引是UNIQUE或PRIMARY KEY。
eq_ref可以用于使用"="操作符比較帶索引的列。比較值為常量或一個(gè)在該表前面所讀取的列的表達(dá)式。
mysql> EXPLAIN SELECT-> product.*-> FROM-> product-> INNER JOIN category ON product.category_id = category.id; +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+ | 1 | SIMPLE | product | NULL | ALL | NULL | NULL | NULL | NULL | 118 | 100 | Using where | | 1 | SIMPLE | category | NULL | eq_ref | PRIMARY | PRIMARY | 4 | db.product.category_id | 1 | 100 | Using index | +----+-------------+-----------+------------+--------+---------------+---------+---------+------------------------+------+----------+-------------+?
轉(zhuǎn)載于:https://www.cnblogs.com/libingql/p/8669150.html
總結(jié)
以上是生活随笔為你收集整理的MySQL系列:性能优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 逻辑于 逻辑或
- 下一篇: 云计算是数据分析的最佳场所吗?