索引与性能分析

一、怎么知道sql执行效率的高低呢???

1.set @@profiling =1;

2.执行语句。

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
| 技术              | 医生          | 不知道        | 都带点           | 都带点
            |         0 |
|           3 | 地点          | ./default/Tpl/image/2014/02/24/139322651638.jpg
|  地点             | 的d           | 地点          |                  |
            |         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)


想要查看语句执行的细节:

mysql>show proliles for query 1;


二、mysql执行计划。

     就是在select语句前面放上关键字explain(说明),mysql解释它将如何处理select,提供有关表如何联合和以什么次序联合的信息。

     我们能做什么?

     1.什么时候我们必须为表加入索引,以得到一个使用索引找到记录的更快的select方法。

     2.优化器是否以一个最佳次序联结表。

    mysql>explain[extended] select * from t;

    对比较复杂的查询进行计划分析时,可能会得到多条执行计划。

    例如:

    mysql>explain select * from t;


三。MYSQL索引建立和使用的基本原则!

     1.合理设计和使用索引。

     2.在关键字段的索引上,建与不建索引,查询速度相差近100倍。

     3.差的索引和没有索引效果一样。

     4.索引并非越多越好,因为维护索引需要成本。

     5.每个表的索引应在5个以下,应合理利用部分索引和联合索引。

     6.不在结果集中的结果单一的列上建索引。比如性别字段只有0和1两种结果,在这个字段上建索引并不会有太多的帮助。

     7.建索引的结果集最好分布均匀,或者符合正态分布。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值