有一个表中存在千万级的数据。
现在使用linq 通过Entity Framework对这个表进行查询
现在有一个条件例如 id=‘222’(不是主键)进行查询表中的数据。后面不带任何排序等,就是简单的待条件查询。发现如果查找的数据是最新插入的会很慢,查询越早插入的数据越快。
同时在数据库中对这个字段建立索引和不建立索引效果没有区别。
同样的语句如果用ADO的方式直接用sql语句进行查询的话,对这个字段建立索引比不建立索引快很多。
请高手指教一下,这个问题到底在哪里,是不是索引导致的,应该怎么解决!!!
12 个解决方案
#1
是插入慢还是查询慢?
数据库肯定要建索引的,大量数据查询一定要分页
数据库肯定要建索引的,大量数据查询一定要分页
#2
大量数据查询,不管是linq还是ado.net,都应当分页
#3
是查询,而且现在不是分页的问题。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。
#4
现在是表的基数大,查出来的数据只有一条,这是现在的主要问题。
分页我认为是解决了这个问题后再进行处理的
分页我认为是解决了这个问题后再进行处理的
#5
如果表的基数大,你查询和插入又频繁的话,你最好把历史数据转移出去
而且数据多,更得建索引
而且数据多,更得建索引
#6
首先历史数据是什么。
这个表中的数据随时都可能用到。
其次 索引势必需要创建的。主要问题是我怀疑现在通过linq查询时没有使用到所创建的索引
这个表中的数据随时都可能用到。
其次 索引势必需要创建的。主要问题是我怀疑现在通过linq查询时没有使用到所创建的索引
#7
没有索引慢是必然的
#8
我对于linq的查询没有触发索引的效果只是怀疑,并不确认。所以有没有高手知道,是不是这个问题。如果是应该怎么解决????
#9
求高手解决啊
#10
哎呀,Oracle 用Entity Framework,你不是自找麻烦嘛。建议使用 ALinq
#11
检查下EF生成的SQL语句,和直接写的有什么区别
#12
没有什么区别,拿过来用很快啊
#1
是插入慢还是查询慢?
数据库肯定要建索引的,大量数据查询一定要分页
数据库肯定要建索引的,大量数据查询一定要分页
#2
大量数据查询,不管是linq还是ado.net,都应当分页
#3
是查询,而且现在不是分页的问题。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。
#4
现在是表的基数大,查出来的数据只有一条,这是现在的主要问题。
分页我认为是解决了这个问题后再进行处理的
分页我认为是解决了这个问题后再进行处理的
#5
如果表的基数大,你查询和插入又频繁的话,你最好把历史数据转移出去
而且数据多,更得建索引
而且数据多,更得建索引
#6
首先历史数据是什么。
这个表中的数据随时都可能用到。
其次 索引势必需要创建的。主要问题是我怀疑现在通过linq查询时没有使用到所创建的索引
这个表中的数据随时都可能用到。
其次 索引势必需要创建的。主要问题是我怀疑现在通过linq查询时没有使用到所创建的索引
#7
没有索引慢是必然的
#8
我对于linq的查询没有触发索引的效果只是怀疑,并不确认。所以有没有高手知道,是不是这个问题。如果是应该怎么解决????
#9
求高手解决啊
#10
哎呀,Oracle 用Entity Framework,你不是自找麻烦嘛。建议使用 ALinq
#11
检查下EF生成的SQL语句,和直接写的有什么区别
#12
没有什么区别,拿过来用很快啊