免费注册 查看新帖 |

Chinaunix

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

mysql 索引和分区问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-04 10:28 |只看该作者 |倒序浏览
大家好:
  为什么我设置的索引和分区,在范围查询的时候不起作用?
  表结构:
  1. mysql> show create table action_play\G;
  2. *************************** 1. row ***************************
  3.        Table: action_play
  4. Create Table: CREATE TABLE `action_play` (
  5.   `id` int(11) NOT NULL AUTO_INCREMENT,
  6.   `song_id` int(11) NOT NULL,
  7.   `category_id` int(11) NOT NULL DEFAULT '0',
  8.   `mdn` char(11) NOT NULL DEFAULT '',
  9.   `ua` varchar(200) NOT NULL DEFAULT '',
  10.   `action_time` datetime NOT NULL,
  11.   `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  12.   `playlength` int(11) NOT NULL DEFAULT '0',
  13.   PRIMARY KEY (`id`,`action_time`),
  14.   KEY `Iplaylength` (`playlength`),
  15.   KEY `ITime_Isong_Imdn` (`action_time`,`mdn`,`song_id`)
  16. ) ENGINE=MyISAM AUTO_INCREMENT=1322700 DEFAULT CHARSET=latin1
  17. /*!50100 PARTITION BY HASH (DATEDIFF(action_time, '1970-01-01'))
  18. PARTITIONS 365 */

  19. mysql> explain partitions select * from action_play where action_time >'2010-06-01' and action_time <'2010-06-03'\G;
  20. *************************** 1. row ***************************
  21.            id: 1
  22.   select_type: SIMPLE
  23.         table: action_play
  24.    partitions: p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100,p101,p102,p103,p104,p105,p106,p107,p108,p109,p110,p111,p112,p113,p114,p115,p116,p117,p118,p119,p120,p121,p122,p123,p124,p125,p126,p127,p128,p129,p130,p131,p132,p133,p134,p135,p136,p137,p138,p139,p140,p141,p142,p143,p144,p145,p146,p147,p148,p149,p150,p151,p152,p153,p154,p155,p156,p157,p158,p159,p160,p161,p162,p163,p164,p165,p166,p167,p168,p169,p170,p171,p172,p173,p174,p175,p176,p177,p178,p179,p180,p181,p182,p183,p184,p185,p186,p187,p188,p189,p190,p191,p192,p193,p194,p195,p196,p197,p198,p199,p200,p201,p202,p203,p204,p205,p206,p207,p208,p209,p210,p211,p212,p213,p214,p215,p216,p217,p218,p219,p220,p221,p222,p223,p224,p225,p226,p227,p228,p229,p230,p231,p232,p233,p234,p235,p236,p237,p238,p239,p240,p241,p242,p243,p244,p245,p246,p247,p248,p249,p250,p251,p252,p253,p254,p255,p256,p257,p258,p259,p260,p261,p262,p263,p264,p265,p266,p267,p268,p269,p270,p271,p272,p273,p274,p275,p276,p277,p278,p279,p280,p281,p282,p283,p284,p285,p286,p287,p288,p289,p290,p291,p292,p293,p294,p295,p296,p297,p298,p299,p300,p301,p302,p303,p304,p305,p306,p307,p308,p309,p310,p311,p312,p313,p314,p315,p316,p317,p318,p319,p320,p321,p322,p323,p324,p325,p326,p327,p328,p329,p330,p331,p332,p333,p334,p335,p336,p337,p338,p339,p340,p341,p342,p343,p344,p345,p346,p347,p348,p349,p350,p351,p352,p353,p354,p355,p356,p357,p358,p359,p360,p361,p362,p363,p364
  25.          type: ALL
  26. possible_keys: ITime_Isong_Imdn
  27.           key: NULL
  28.       key_len: NULL
  29.           ref: NULL
  30.          rows: 970079
  31.         Extra: Using where
复制代码
版本是:
| server_id                                 | 0                            |
| version                                   | 6.0.9-alpha-community        |
| version_comment                           | MySQL Community Server (GPL) |
| version_compile_machine                   | i686                         |
| version_compile_os                        | pc-linux-gnu                 |




大家帮看看问题出在哪里了?
速度太慢了,这么搞的话都不如不分区了。

论坛徽章:
0
2 [报告]
发表于 2010-06-04 11:30 |只看该作者
hash分区用到范围查询的时候貌似就有这样的问题,直接=就可以。不知道是不是bug

论坛徽章:
0
3 [报告]
发表于 2010-06-04 11:42 |只看该作者
回复 2# voxxu


    range 这么分也不好用

论坛徽章:
0
4 [报告]
发表于 2010-06-04 14:56 |只看该作者
rang的范围查询是可以的

论坛徽章:
0
5 [报告]
发表于 2010-06-05 09:51 |只看该作者
那是你没分对。

论坛徽章:
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
6 [报告]
发表于 2010-06-05 11:47 |只看该作者
HASH 以后action_time的值并不是线性增加的,对于mysql来说没法判断该用哪个子分区。

论坛徽章:
0
7 [报告]
发表于 2010-06-07 11:45 |只看该作者
HASH分区用来做range,效果不咋的,还是不建议这么用。
实际上,现在Mysql分区还没有做到真正的并发执行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP