免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yyxxzz
打印 上一主题 下一主题

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
11 [报告]
发表于 2009-11-17 13:16 |只看该作者
恩,从我们看来,确实是使用cid_total更为合适。
但是对于mysql优化器来说,它通过某些statistics的判断,认为key_total更好。
而use index就是用来帮助优化器进行判断的。

简单的说现在只有3种方法,删掉key_total 或者修改语句,或者把key_total 调整为 ( cid,lmsn,key_prop )你看是不是合适?

论坛徽章:
0
12 [报告]
发表于 2009-11-17 13:47 |只看该作者
原帖由 cenalulu 于 2009-11-17 13:16 发表
恩,从我们看来,确实是使用cid_total更为合适。
但是对于mysql优化器来说,它通过某些statistics的判断,认为key_total更好。
而use index就是用来帮助优化器进行判断的。

简单的说现在只有3种方法,删掉 ...


把key_total 调整为 ( cid,lmsn,key_prop ) 这样调整的话,
这样的sql 用不到key_total了吧?或者只能用到cid了
select iid,title,nick,category_name,pic_path,price,credit from tb_goods where cid=1201 and key_prop='xx' order by lmsn desc  limit 0,20

问一下,现在数据库的tb_goods;表大概有260w 数据,而mysql 的key_buffer_size设置的是8388600,8mb
是不是太小了啊,调整到多少比较合适呢,先谢谢

论坛徽章:
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
13 [报告]
发表于 2009-11-17 15:46 |只看该作者
原帖由 yyxxzz 于 2009-11-17 13:47 发表


把key_total 调整为 ( cid,lmsn,key_prop ) 这样调整的话,
这样的sql 用不到key_total了吧?或者只能用到cid了
select iid,title,nick,category_name,pic_path,price,credit from tb_goods where ci ...



如果你还有select iid,title,nick,category_name,pic_path,price,credit from tb_goods where cid=1201 and key_prop='xx' order by lmsn desc  limit 0,20
这样的语句的话,就不能改顺序了。
只有加use index了。

至于key_buffer_size主要是看你status来进行的调优的
show global status like '%key%';
| Key_read_requests      | 1313785  |
| Key_reads              | 7247 |

1-Key_reads/Key_read_requests  就是你key-buffer的命中率
一般来说 Key_reads/Key_read_requests 小于0.001为佳

论坛徽章:
0
14 [报告]
发表于 2009-11-18 00:11 |只看该作者
你索引没建对吧 试下来个联合索引看看

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
15 [报告]
发表于 2009-11-18 16:11 |只看该作者
原帖由 yangward 于 2009-11-18 00:11 发表
你索引没建对吧 试下来个联合索引看看



你的建议呢?

你的情况应该可以用use index比较好
调整index里面的顺序或者建立多少index,你要分析你整个系统的sql,不能只用一个sql说事的

论坛徽章:
0
16 [报告]
发表于 2009-11-18 23:54 |只看该作者
原帖由 ruochen 于 2009-11-18 16:11 发表



你的建议呢?

你的情况应该可以用use index比较好
调整index里面的顺序或者建立多少index,你要分析你整个系统的sql,不能只用一个sql说事的


我先用use index 吧,我用Analyze table tb_goods 以后 lmsn 的 Cardinality 变小了一点
现在我的key_buffer_size 调整到512MB,但是我show status like 'key_read%'
mysql> show status like 'key_read%';
+-------------------+---------+
| Variable_name     | Value   |
+-------------------+---------+
| Key_read_requests | 7211061 |
| Key_reads         | 295390  |
+-------------------+---------+
2 rows in set (0.00 sec)

比率还是很小,1:24,有的时候是1:50

论坛徽章:
0
17 [报告]
发表于 2009-11-18 23:58 |只看该作者
还有一个问题,现在的单表 已经有26G了,260多w行,myiasm会不会出现问题啊

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
18 [报告]
发表于 2009-11-19 08:20 |只看该作者
原帖由 yyxxzz 于 2009-11-18 23:58 发表
还有一个问题,现在的单表 已经有26G了,260多w行,myiasm会不会出现问题啊



每行平均10KB?

看你自己的情况,如果有很多以前的数据今后基本不会使用到,还是转成历史表存放比较好

论坛徽章:
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
19 [报告]
发表于 2009-11-19 09:17 |只看该作者
原帖由 yyxxzz 于 2009-11-18 23:58 发表
还有一个问题,现在的单表 已经有26G了,260多w行,myiasm会不会出现问题啊



根据业务需要逻辑分表或者物理分表吧。
而且一行这么多信息。。。可以考虑分成两个表

论坛徽章:
0
20 [报告]
发表于 2009-11-19 10:02 |只看该作者
原帖由 cenalulu 于 2009-11-19 09:17 发表



根据业务需要逻辑分表或者物理分表吧。
而且一行这么多信息。。。可以考虑分成两个表


主要有个字段description,比较大,其他字段都比较小
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP