一位同事问我,有一张表,只有一个字段,int 型,很大很大,问如何做才能在查询例如1-3,1-300之类的count个数,达到速度最快,谢谢。
我说做索引,然后select count(*) from table where 字段>N and 字段<M ,他说他也是这样想的,只是不清楚这是不是最好的方法。现在弄上来问问大家。
------解决方案--------------------
做索引是必须的,问题是做什么样的索引最合适。
------解决方案--------------------
只有一列的话,建一个聚集索引。注意: where 字段>N and 字段<M 这里的N/M一定要是int类型,否则索引可能无效
------解决方案--------------------
建议:
1.看表数据实际的使用范围,选择合适的数据类型,
int型的范围是-2147483648->2147483647,即21亿多.是否真有必要?
可考虑使用smallint(-32768->32767).
2.索引建为聚集索引.