免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1706 | 回复: 6
打印 上一主题 下一主题

索引的菜问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-15 10:33 |只看该作者 |倒序浏览
原来有这样的索引,imsi有200多W条
mysql> show index from account_detail;
+----------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table          | Non_unique | Key_name  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| account_detail |          1 | IMSI      |            1 | IMSI        | A         |     2618580 |     NULL | NULL   |      | BTREE      |         |
| account_detail |          1 | load_time |            1 | load_time   | A         |         504 |     NULL | NULL   |      | BTREE      |         |
+----------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+

我在同一个表里面的另一个字段新建了一个索引,再看:
mysql> show index from account_detail;
+----------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table          | Non_unique | Key_name  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| account_detail |          1 | IMSI      |            1 | IMSI        | A         |      125767 |     NULL | NULL   |      | BTREE      |         |
| account_detail |          1 | load_time |            1 | load_time   | A         |         701 |     NULL | NULL   |      | BTREE      |         |
| account_detail |          1 | MDN       |            1 | MDN         | A         |      120051 |     NULL | NULL   |      | BTREE      |         |
+----------------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.00 sec)
连IMSI也变少到了12W条,我不明白为什么新建另一个字段的索引会影响原有字段上的索引呢?

论坛徽章:
0
2 [报告]
发表于 2009-06-15 10:47 |只看该作者
都要重新生成的

论坛徽章:
0
3 [报告]
发表于 2009-06-15 11:01 |只看该作者
就算重新生成,原来的数量也不应该从200W降低成12W啊?

论坛徽章:
0
4 [报告]
发表于 2009-06-15 14:28 |只看该作者
select  count (*)from account_detail;
先确认一下 现在到底有多少条记录

论坛徽章:
0
5 [报告]
发表于 2009-06-15 15:38 |只看该作者

回复 #4 聪明笨小孩 的帖子

有500W条记录。

论坛徽章:
0
6 [报告]
发表于 2009-06-15 18:22 |只看该作者
MySQL有这个问题。有时的统计不准确。
可以利用analyze table TbName;
帮助MySQL拿到精确的统计,以便MySQL优化器能较好的选择。

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
7 [报告]
发表于 2009-06-15 20:53 |只看该作者
mysql不会自动更新Cardinality 这个值,所以2618580 估计是你很久以前的值了吧。
一般情况下analyze table的时候才会更新这个值。
select count(distinct IMSI) from account_detail ;
看看这列的不重复值有多少。


PS: 这篇文章可能会对你有帮助。对cardinality的特性做了些实例分析。

http://www.mysqlperformanceblog. ... e-myisam-vs-innodb/

[ 本帖最后由 cenalulu 于 2009-6-15 21:20 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP