mysqlgroupby能用到索引么?(mysql中的explain怎么使用)

mysqlgroupby能用到索引么?

让group by 使用索引而不创建临时表,使用索引的前提条件是:所有GROUP BY列引用同一索引的属性,并且索引按顺序保存其关键字(B-树索引,不是HASH索引)至于DISTINCT 和GROUP BY哪个效率更高?

理论上 DISTINCT操作只需要找出所有不同的值就可以了。而GROUP BY操作还要为其他聚集函数进行准备工作。从这一点上将,GROUP BY操作做的工作应该比DISTINCT所做的工作要多一些。但是实际上,DISTINCT操作,它会读取了所有记录;GROUP BY需要读取的记录数量与分组的组数量一样多,比实际存在的记录数目要少很多。

mysql注意事项?

1.  避免使用 select *       你需要什么信息,就查询什么信息,查询的多了,查询的速度肯定就会慢

2.  当你只需要查询出一条数据的时候,要使用 limit 1   比如你要查询数据中是否有男生,只要查询一条含有男生的记录就行了,后面不需要再查了,使用Limit 1 可以在找到一条数据后停止搜索

3.   建立高性能的索引   索引不是随便加的也不是索引越多越好,更不是所有索引对查询都有效

4.   建数据库表时,给字段设置固定合适的大小.    字段不能设置的太大,设置太大就造成浪费,会使查询速度变慢

5.   要尽量使用not null 

6.   EXPLAIN 你的 SELECT 查询   使用EXPLAIN,可以帮助你更了解MySQL是如何处理你的sql语句的, 你可以查看到sql的执行计划,这样你就能更好的去了解你的sql语句的不足,然后优化语句.

7.   在Join表的时候,被用来Join的字段,应该是相同的类型的,且字段应该是被建过索引的,这样,MySQL内部会启动为你优化Join的SQL语句的机制。

8.   如果你有一个字段,比如“性别”,“国家”,“民族”, “省份”,“状态”或“部门”,这些字段的取值是有限而且固定的,那么,应该使用 ENUM 而不是 VARCHAR。

 因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。

9.  垂直分割    将常用和有关系的字段放在相同的表中,把一张表的数据分成几张表    这样可以降低表的复杂度和字段的数目,从而达到优化的目的

到此,以上就是小编对于的问题就介绍到这了,希望这2点解答对大家有用。

当前文章:mysqlgroupby能用到索引么?(mysql中的explain怎么使用)
URL分享:http://www.shufengxianlan.com/qtweb/news26/450226.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联