一、怎么知道sql執(zhí)行效率的高低呢??? 1.set @@profiling =1; 2.執(zhí)行語句。 3.show proliles; mysql show profiles; Empty set (0.00 sec) mysql set @@profiling=1; Query OK, 0 rows affected (0.00 sec) mysql select * from wtdoctor order by rand()
一、怎么知道sql執(zhí)行效率的高低呢???
1.set @@profiling =1;
2.執(zhí)行語句。
3.show proliles;
mysql> show profiles;
Empty set (0.00 sec)
mysql> set @@profiling=1;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from wtdoctor order by rand() limit 2 \g
+-------------+---------------+-------------------------------------------------
+-------------------+---------------+---------------+------------------+--------
------------+-----------+
| wmxDoctorID | wmxDoctorName | wmxDoctorPhoto
| wmxProfessionalID | wmxAcademicID | wmxHospitalID | wmxDepartmentsID | wmxDise
asesClassID | inputtime |
+-------------+---------------+-------------------------------------------------
+-------------------+---------------+---------------+------------------+--------
------------+-----------+
| 5 | 琉璃 | ./default/Tpl/image/2014/03/04/139391281120.jpg
| 技術(shù) | 醫(yī)生 | 不知道 | 都帶點(diǎn) | 都帶點(diǎn)
| 0 |
| 3 | 地點(diǎn) | ./default/Tpl/image/2014/02/24/139322651638.jpg
| 地點(diǎn) | 的d | 地點(diǎn) | |
| 0 |
+-------------+---------------+-------------------------------------------------
+-------------------+---------------+---------------+------------------+--------
------------+-----------+
2 rows in set (0.00 sec)
mysql> show profiles;
+----------+------------+------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+------------------------------------------------+
| 1 | 0.00058350 | select * from wtdoctor order by rand() limit 2 |
+----------+------------+------------------------------------------------+
1 row in set (0.00 sec)
想要查看語句執(zhí)行的細(xì)節(jié):
mysql>show proliles for query 1;
二、mysql執(zhí)行計(jì)劃。
就是在select語句前面放上關(guān)鍵字explain(說明),mysql解釋它將如何處理select,提供有關(guān)表如何聯(lián)合和以什么次序聯(lián)合的信息。
我們能做什么?
1.什么時(shí)候我們必須為表加入索引,以得到一個(gè)使用索引找到記錄的更快的select方法。
2.優(yōu)化器是否以一個(gè)最佳次序聯(lián)結(jié)表。
mysql>explain[extended] select * from t;
對(duì)比較復(fù)雜的查詢進(jìn)行計(jì)劃分析時(shí),可能會(huì)得到多條執(zhí)行計(jì)劃。
例如:
mysql>explain select * from t;
三。MYSQL索引建立和使用的基本原則!
1.合理設(shè)計(jì)和使用索引。
2.在關(guān)鍵字段的索引上,建與不建索引,查詢速度相差近100倍。
3.差的索引和沒有索引效果一樣。
4.索引并非越多越好,因?yàn)榫S護(hù)索引需要成本。
5.每個(gè)表的索引應(yīng)在5個(gè)以下,應(yīng)合理利用部分索引和聯(lián)合索引。
6.不在結(jié)果集中的結(jié)果單一的列上建索引。比如性別字段只有0和1兩種結(jié)果,在這個(gè)字段上建索引并不會(huì)有太多的幫助。
7.建索引的結(jié)果集最好分布均勻,或者符合正態(tài)分布。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com