分区表吗? 如果是的话, 和ef没关系。 只要在数据库里做配置就可以。 另外500w数据量不大, 用好分页和索引, 性能绝对不是问题
500为什么会变慢?是你没加索引吧``
就算加了索引,我对这个表的查询,要做按照日期区间来查询,本身就可以分成每个月一个表,这样效率就会很高了。 但是EF 我就不知道怎么分。
@fjc1988: 其实是一样的,分表时你定位表的操作其实也是是使用一个索引.分表并不会提高效率.
分表只会提高逻辑复杂度.不会对数据库性能产生优化
@fjc1988: 很显然你的索引没建好, 才500万的数据.....
使用存储过程来进行查询, 不要用EF, EF在查询后面的页码时, 得先把数据都拿到内存中, 再去查询 take.
直接在数据库, 用存储过程查很快的.
主键不要建在Id列上. 这是唯一一个聚集索引, 好好利用.
再参考sql的查询分析器给出的一些数据进行优化
有没有延迟加载,或上马
使用表分区应该观点用吧,不分表。
表分区确实可以解决一定的性能问题,但是从长远来说,还是增加了查询逻辑的复杂性。
例如,现在我想按照地区来给数据表分表,这样的业务是现实存在的。
这样分表后,每个表就是一个区域了,把数据量水平分割了并且查询逻辑也变得简单了。
@fjc1988: 有道理,但是也没有做过这种EF分表的处理。关注一下,不好意思啊。
实体框架原本就满足你的情况(数据多了很慢,至少4.1的版本就这样)
不要分表 用表分区 sql2005 之上都支持