某表:
1.该表数据量极大(1000W)
2.该表的`id_account`跟`datetime`字段会经常被做为搜索条件进行查询
字段类型:
id_account int
datetime timestamp
其中datetime查询的条件是按天的查询,如2013-03-18 00:00:00~2013-03-18 23:59:59的范围
以以上做为基准,请问我需要让这张表的查询速度加快的话,需要怎样的设计该表,谢谢
1. 表中的主键 id_account 建立使用固定的长度使用 char 类型,这样索引后,查询速度会更快
2. datetime 这个字段不要使用 timestamp 类型,查询起来很费劲(between ... and ...)
建议增加一个字段,fdatestr 格式为:yyyymmdd ,并进行索引
这样查询某天时,直接使用一个条件 fdatestr = '20130318' ,因为已经索引,查询效果应该很明显
如果涉及到月度的查询的话可以这样,多加两个字段 fmonth 格式:yyyymm 年月
fday 格式:dd 日
并将两个字段索引,可以提高你的查询效率
总之怎么设计根据你的需求来追问
2. datetime 这个字段不要使用 timestamp 类型,查询起来很费劲(between ... and ...)
建议增加一个字段,fdatestr 格式为:yyyymmdd ,并进行索引
这样查询某天时,直接使用一个条件 fdatestr = '20130318' ,因为已经索引,查询效果应该很明显
如果涉及到月度的查询的话可以这样,多加两个字段 fmonth 格式:yyyymm 年月
fday 格式:dd 日
并将两个字段索引,可以提高你的查询效率
总之怎么设计根据你的需求来追问
好,谢谢
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-03-18
1000W你用int?? 霸气!!如何真的要这样的话 建议你date别用timestamp类型 改Number 如果按你要求的 亲 确实没法做 日期类型在数据库中 不管是查找还是什么 都是最慢的 id这个怎么设计都无所谓 如果不该表的话 那就查询语句加好索引吧 这个 真心 给跪了啊
第2个回答 2013-03-18
id建索引date用convert转成年月日格式