(1)查看表結(jié)構(gòu)
MariaDB [oldboy]> desc test1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(4) | NO | | NULL | |
| name | char(16) | NO | | NULL | |
| age | int(2) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
(2)explain 查看是否含有建立索引的語句
MariaDB [oldboy]> explain select * from test1 where name="kaka"\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test1
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 5 #查詢行數(shù),表示當(dāng)前查詢了5行
Extra: Using where
1 row in set (0.00 sec)
(3)創(chuàng)建索引
MariaDB [oldboy]> create index index_name on test1(name);
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
(4)重新查詢
MariaDB [oldboy]> explain select * from test1 where name="kaka"\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test1
type: ref
possible_keys: index_name
key: index_name
key_len: 48
ref: const
rows: 1 #查詢行數(shù),表示當(dāng)前只查詢了1行
Extra: Using index condition
1 row in set (0.00 sec)
#從以上例子可以看到,使用索引,可以更快的查詢所需要的信息。
每隔2,秒輸入:SHOW FULL PROCESSLIST; 如果出現(xiàn)2次說明存在慢查詢
MariaDB [oldboy]> show full processlist;
+----+------+-----------+--------+---------+------+-------+-----------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+----+------+-----------+--------+---------+------+-------+-----------------------+----------+
| 9 | root | localhost | oldboy | Query | 0 | NULL | show full processlist | 0.000 |
+----+------+-----------+--------+---------+------+-------+-----------------------+----------+
1 row in set (0.00 sec)
配置參數(shù)記錄慢查詢語句
log_query_time = 2 #執(zhí)行超過2s記錄到log中
log_queries_not_using_indexes #沒有走索引的語句,記錄log中
log-slow-queries = /data/3306/slow.log #log的位置
explain select * from test from where name='oldboy'\G #查看是否走索引
explain select SQL_NO_CACHE * from test where name='oldboy'\G #去除緩存
生產(chǎn)場(chǎng)景,大表不能高峰期建立索引,例如:300萬記錄
為崇信等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及崇信網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、崇信網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
切割慢查詢?nèi)罩?,去重分析后發(fā)給大家
1)mv,reload進(jìn)程 2)cp,>清空
2)定時(shí)任務(wù)
mv /data/3306/slow.log /opt/$(date +%F)_slow.log
mysqladmin -uroot -p123456 flush-logs
mysqlsla分析:http://blog.itpub.net/7607759/viewspace-692828/
優(yōu)化起因:
1)網(wǎng)站出了問題,訪問很慢。
a.web服務(wù)器的負(fù)載、存儲(chǔ)、db(負(fù)載、io、cpu)
登錄db:show full processlist
2)慢查詢語句(日志文件)
long_query_time=2 #執(zhí)行超過2s記錄到log中
log_queries_not_using_indexs #沒有走索引的語句,記錄log中
log-slow-queries=/data/3306/slow.log #log的位置
切割,分析,發(fā)給管理員
案例分析:
1.查看是否db存在慢查詢:show full processlist;
2.explain分析:explain 慢查詢的語句
3.查看表結(jié)構(gòu):desc test1;
4.定位在哪列建立索引,哪張表
5.查看條件字段列的唯一值的數(shù)量 select count(distinct ader) from ad_oldboy_detail
6.建立索引 create index ....
了解內(nèi)容,高級(jí)DBA使用
help show profile;
select @@profiling;
set profiling = 1;
select @@profiling;
show profile;
show profile for query 2;
http://www.cnblogs.com/adforce/archive/2012/06/02/2532287.html
網(wǎng)頁題目:SQL語句優(yōu)化
分享URL:http://jinyejixie.com/article28/jojhjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、商城網(wǎng)站、面包屑導(dǎo)航、云服務(wù)器、靜態(tài)網(wǎng)站、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)