日期:2014-05-16  浏览次数:20792 次

求助一个分区问题
有如下SQL语句
SQL code

CREATE  TABLE IF NOT EXISTS `dx_gd_goods2` (
  `g_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '商品ID\n' ,
  `g_name` varchar(225)  COMMENT '商品名称\n' ,
  `b_id` int(11) unsigned not NULL  COMMENT '商家ID\n',
  `t_id` int(11) unsigned not NULL COMMENT '所属分类ID\n',
  `g_img_big` varchar(200) NULL COMMENT '商品大图\n' ,
  PRIMARY KEY (`g_id`,`t_id`) )
ENGINE = MyISAM DEFAULT CHARSET=utf8
COMMENT = '商品表\n'

PARTITION BY RANGE (t_id) (
PARTITION p0 VALUES LESS THAN (0),
PARTITION p1 VALUES LESS THAN (100000000) , 
PARTITION p2 VALUES LESS THAN (110000000) ,
PARTITION p3 VALUES LESS THAN (120000000) , 
PARTITION p4 VALUES LESS THAN (130000000) ,
PARTITION p5 VALUES LESS THAN (140000000) , 
PARTITION p6 VALUES LESS THAN (150000000) ,
PARTITION p7 VALUES LESS THAN (160000000) , 
PARTITION p8 VALUES LESS THAN (170000000) ,
PARTITION p9 VALUES LESS THAN (180000000) , 
PARTITION p10 VALUES LESS THAN(190000000) ,
PARTITION p11 VALUES LESS THAN MAXVALUE 
);



我以t_id分区,分区是成功了的(我写入了一个数据,然后删除他的对应分区,在查询是得不到数据的,这就表示分区成功),然后呢,我explan一下
explain SELECT * FROM `dx_gd_goods2` where t_id >=100000000 and t_id<110000000;
结果看到的信息里,并没有用到分区 (没有partitions这个信息),我想请问一下,我这里分区那错了?我怎么才能用得到分区呢?

explain

mysql> explain SELECT * FROM `dx_gd_goods2` where t_id >=100000000 and t_id<110000000;
+----+-------------+--------------+--------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+--------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | dx_gd_goods2 | system | NULL | NULL | NULL | NULL | 1 | |
+----+-------------+--------------+--------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)




------解决方案--------------------
转到mysql版吧,那边牛人多。
------解决方案--------------------
找专业高手问问,少走弯路~
------解决方案--------------------
分区是内部行为,对于使用者而言:除了查询速度变快了以外,与不分区的表没有什么两样

explain 返回的是 sql 指令使用资源的情况,与分区无关
explain 也不会给出如何创建分区的建议
------解决方案--------------------
分区主要用于当你一个表的数据非常大时
你可以试一下 有几千万数据的分区表跟没分区表 再对比下速度