MySQL使用存储的键分布基数来确定表连接顺序
在决定对查询中的特定表使用哪些索引时,也会使用使用键分布基数

ANALYZE TABLE 表名 可以更新表的索引基数,使其更接近非重复的记录数,记录数可以使用show index from 表 来查询cardinality字段

mysql> show index from index_test;
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| index_test | 0 | PRIMARY | 1 | id | A | 5 | NULL | NULL | | BTREE | | |
| index_test | 1 | score_index | 1 | score | A | 2 | NULL | NULL | | BTREE | | |
| index_test | 1 | name_gid_age_index | 1 | name | A | 3 | NULL | NULL | | BTREE | | |
| index_test | 1 | name_gid_age_index | 2 | gid | A | 3 | NULL | NULL | | BTREE | | |
| index_test | 1 | name_gid_age_index | 3 | age | A | 6 | NULL | NULL | | BTREE | | |
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
5 rows in set (0.00 sec) mysql> select * from index_test;
+----+------------+-----+-----+-------+
| id | name | gid | age | score |
+----+------------+-----+-----+-------+
| 1 | taoshihan | 2 | 0 | 0 |
| 2 | taoshihan1 | 2 | 0 | 0 |
| 3 | taoshihan2 | 3 | 10 | 10 |
| 4 | taoshihan | 2 | 1 | 0 |
| 5 | taoshihan | 2 | 2 | 0 |
| 6 | taoshihan | 2 | 3 | 0 |
+----+------------+-----+-----+-------+
6 rows in set (0.03 sec) mysql> ANALYZE TABLE index_test;
+--------------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------+---------+----------+----------+
| my_test.index_test | analyze | status | OK |
+--------------------+---------+----------+----------+
1 row in set (0.13 sec) mysql> show index from index_test;
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| index_test | 0 | PRIMARY | 1 | id | A | 6这里变了 | NULL | NULL | | BTREE | | |
| index_test | 1 | score_index | 1 | score | A | 2 | NULL | NULL | | BTREE | | |
| index_test | 1 | name_gid_age_index | 1 | name | A | 3 | NULL | NULL | | BTREE | | |
| index_test | 1 | name_gid_age_index | 2 | gid | A | 3 | NULL | NULL | | BTREE | | |
| index_test | 1 | name_gid_age_index | 3 | age | A | 6 | NULL | NULL | | BTREE | | |
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
5 rows in set (0.07 sec)

  

[MySQL]ANALYZE TABLE 更新索引基数的更多相关文章

  1. MySQL ANALYZE TABLE

    Analyze Table MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应 ...

  2. mysql 优化analyze table

    Analyze Table MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应 ...

  3. MySQL check table/optimize table/analyze table/REPAIR TABLE

    MySQL check table/optimize table/analyze table/REPAIR TABLE 转自:https://www.cnblogs.com/datastack/p/3 ...

  4. MySQL: OPTIMIZE TABLE: Table does not support optimize, doing recreate + analyze instead

    show create table history;-------------------------- CREATE TABLE `foo` (  `itemid` bigint(20) unsig ...

  5. mysql optimize table

    mysql 数据文件的使用是只扩展,不回收.对表执行delete之后,磁盘上数据文件是不会缩小的. 通常的做法,是先逻辑导出,然后truncate 原表(或者删除重建),再导入. 另外还有一种方法是o ...

  6. mysql analyze和optimize

    Analyze Table MySQL 的Optimizer(优化元件)在优化SQL语句时,首先需要收集一些相关信息,其中就包括表的cardinality(可以翻译为“散列程度”),它表示某个索引对应 ...

  7. Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  8. [转] Oracle analyze table 使用总结

    转自:http://www.cnblogs.com/einyboy/archive/2012/08/09/2630321.html analyze table 一般可以指定分析: 表,所有字段,所有索 ...

  9. MySQL Create Table创建表

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name co ...

随机推荐

  1. 编程基础--XML约束

    2020年新年第一天,不写一篇博客纪念一下都感觉对不起这个跨年 为什么会写一篇关于xml的博客呢?xml在编程中用的又不多,再多也用不着自己写约束文件,只要能看懂就行了不是吗?嗯,没别的原因,就是想研 ...

  2. Windows 7原版映像中添加usb3.0驱动

    最近用软碟通制作了一个win7原版映像,但是在装新系统的时候发现了一个问题,进入安装界面后,显示没有找到驱动器,但是明明是差了U盘的,通过“shift+f12”调出命令行窗口,输入disk list命 ...

  3. Linux系统搭建私有CA证书服务器

    一.CA简介 CA是什么?CA是Certificate Authority的简写,从字面意思翻译过来是凭证管理中心,认证授权.它有点类似我们生活中的身份证颁发机构,这里的CA就相当于生活中颁发身份证的 ...

  4. CSS-08-边框属性设置

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. redis缓存数据库及Python操作redis

    缓存数据库介绍  NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站, 特 ...

  6. ios---图片缩放

    1.设置scrollview的代理 2.实现如下方法 -(UIView )viewForZoomingInScrollView:(UIScrollView )scrollView{ return se ...

  7. linux---> siege压力测试工具使用

    siege压力测试工具使用 安装 下载地址 : http://download.joedog.org/siege/ CaodeMacBook-Pro:local root# tar -xzvf sie ...

  8. SpringBoot高级篇Ⅸ --- 热部署与监控管理

    一.热部署 在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费,我们不希望重启应用的情况下,程序可以自动部署(热部署). 1.1 模板引擎 在SpringBoot中开发情况 ...

  9. HDU_2446_打表

    http://acm.hdu.edu.cn/showproblem.php?pid=2446 打表,二分查找,注意查找最后的判断. #include<cstdio> #define N 2 ...

  10. 《剑指Offer》第二章(一)题 9 -12

    第二章 面试题9:用两个栈实现队列 题目:如面试题,给你两个栈, 实现队列的先进先出,即在队列头删除一个元素以及在队列的尾部添加一个元素 思路:这个题的分析感觉很巧妙,从一个具体的例子入手,找出其中的 ...