1。 mysql里面对于联合主键是具体怎么实现的?kd树还是其它?
比如:
SQL codecreate table example(
id int auto_increment,
time datetime,
value int
primary key(id, time)
key (value)
);
2. 我的程序里面大概需要插入4000万到6000万这个数量级的数据到example这个表,测试表明如果不做联合主键,只用自增字段id作为单独主键并且不为value字段做索引的话,可以在半个小时左右做完(在配置8核,64G内存的服务器上)。
但是如果按上面那样,建联合主键(其实是要按照time做分区表,所以不得不把time加到主键里面)并且为value字段加上索引(方便以后查询用),时间就会大很多倍,大概需要8个小时左右,足足多了10倍以上 想问有什么办法可以提高一点速度么?先关索引,或者等数据插入完毕再来建索引和加主键,在数据量这么大的表上有可操作性么?对于分区表,能不能只为其中某些分区表建主键或者索引,而不是整个表?
比如:
SQL codecreate table example(
id int auto_increment,
time datetime,
value int
primary key(id, time)
key (value)
);
2. 我的程序里面大概需要插入4000万到6000万这个数量级的数据到example这个表,测试表明如果不做联合主键,只用自增字段id作为单独主键并且不为value字段做索引的话,可以在半个小时左右做完(在配置8核,64G内存的服务器上)。
但是如果按上面那样,建联合主键(其实是要按照time做分区表,所以不得不把time加到主键里面)并且为value字段加上索引(方便以后查询用),时间就会大很多倍,大概需要8个小时左右,足足多了10倍以上 想问有什么办法可以提高一点速度么?先关索引,或者等数据插入完毕再来建索引和加主键,在数据量这么大的表上有可操作性么?对于分区表,能不能只为其中某些分区表建主键或者索引,而不是整个表?
比如,如果我等某天的数据插入后对表增加了索引和主键,那么第二天插入的时候就等于对一个已经有索引的表进行操作了。
mysql5.1版本对auto_inc锁进行了改进了,5.1的速度会比5.0高