MySQL数据库里,目前以auto_increment的ID为主键,但是需要频繁以时间字段进行检索,如何操作效率最高? 200
时间也是按照ID的大小进行有序排列的。auto_increment的ID的值越大,时间值同样也越大。不想设置索引。因为索引会很大程度上影响insert操作的效率。谢谢!...
时间也是按照ID的大小进行有序排列的。auto_increment的ID的值越大,时间值同样也越大。
不想设置索引。因为索引会很大程度上影响insert操作的效率。
谢谢! 展开
不想设置索引。因为索引会很大程度上影响insert操作的效率。
谢谢! 展开
2个回答
展开全部
如果Insert数据不是大批量的话,强烈建议创建索引,只样检索效率最高,代码也好写。
否则如果时间字段不会更新的话,倒是可以创建一个函数传入时间字段和上区间/下区间标记返回上区间/下区间ID,这个函数也不复杂就是根据现在的数据现状把时间分几个区间,比如: if p_date <= '2014-11-1' and p_date >= '2014-11-1' then return 上区间/下区间ID (if else 分支越细 主键ID的索引利用率越高), 这样在Where中用这个函数就可以利用主键ID的索引了,不用时间索引只能这样了。
否则如果时间字段不会更新的话,倒是可以创建一个函数传入时间字段和上区间/下区间标记返回上区间/下区间ID,这个函数也不复杂就是根据现在的数据现状把时间分几个区间,比如: if p_date <= '2014-11-1' and p_date >= '2014-11-1' then return 上区间/下区间ID (if else 分支越细 主键ID的索引利用率越高), 这样在Where中用这个函数就可以利用主键ID的索引了,不用时间索引只能这样了。
展开全部
由于本人知识较浅,说的不一定对啊。既然你不想在时间字段设置索引,那就把时间字段改为主键(其实默认给主键字段加了索引),如果时间字段不重复的话。然后就不要ID字段了。
追问
1、时间字段不能确保不重复。
2、设置索引的话,每次insert操作效率会降低百分之多少?
追答
建立索引,数据库存储文件会稍大一些,插入的话应该影响不是很大。你的系统对插入操作要求性能很高吗?如果不是很高,就和你之前一样,在时间字段建索引。做技术嘛,只能选折衷方案了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询