linq 对oracle的大数据查询问题(单表千万级数据)

时间:2022-04-16 20:54:11
数据库用的是oracle 11g 
有一个表中存在千万级的数据。

现在使用linq 通过Entity Framework对这个表进行查询
现在有一个条件例如 id=‘222’(不是主键)进行查询表中的数据。后面不带任何排序等,就是简单的待条件查询。发现如果查找的数据是最新插入的会很慢,查询越早插入的数据越快。
同时在数据库中对这个字段建立索引和不建立索引效果没有区别。

同样的语句如果用ADO的方式直接用sql语句进行查询的话,对这个字段建立索引比不建立索引快很多。
请高手指教一下,这个问题到底在哪里,是不是索引导致的,应该怎么解决!!!

12 个解决方案

#1


是插入慢还是查询慢?
数据库肯定要建索引的,大量数据查询一定要分页

#2


大量数据查询,不管是linq还是ado.net,都应当分页

#3


是查询,而且现在不是分页的问题。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。

#4


现在是表的基数大,查出来的数据只有一条,这是现在的主要问题。
分页我认为是解决了这个问题后再进行处理的

#5


如果表的基数大,你查询和插入又频繁的话,你最好把历史数据转移出去

而且数据多,更得建索引

#6


首先历史数据是什么。
这个表中的数据随时都可能用到。

其次 索引势必需要创建的。主要问题是我怀疑现在通过linq查询时没有使用到所创建的索引
                                     

#7


引用 3 楼 freedomYL 的回复:
是查询,而且现在不是分页的问题。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。

没有索引慢是必然的

#8


我对于linq的查询没有触发索引的效果只是怀疑,并不确认。所以有没有高手知道,是不是这个问题。如果是应该怎么解决????

#9


求高手解决啊

#10


哎呀,Oracle 用Entity Framework,你不是自找麻烦嘛。建议使用 ALinq

#11


检查下EF生成的SQL语句,和直接写的有什么区别

#12


没有什么区别,拿过来用很快啊

#1


是插入慢还是查询慢?
数据库肯定要建索引的,大量数据查询一定要分页

#2


大量数据查询,不管是linq还是ado.net,都应当分页

#3


是查询,而且现在不是分页的问题。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。

#4


现在是表的基数大,查出来的数据只有一条,这是现在的主要问题。
分页我认为是解决了这个问题后再进行处理的

#5


如果表的基数大,你查询和插入又频繁的话,你最好把历史数据转移出去

而且数据多,更得建索引

#6


首先历史数据是什么。
这个表中的数据随时都可能用到。

其次 索引势必需要创建的。主要问题是我怀疑现在通过linq查询时没有使用到所创建的索引
                                     

#7


引用 3 楼 freedomYL 的回复:
是查询,而且现在不是分页的问题。
问题在于我查询的数据只有一条数据,如果这条数据是新插入的那么查询起来会很慢,如果是最开始插入的,就很快。
总感觉是用linq查询时,对这个条件创建的索引没有起到效果。

没有索引慢是必然的

#8


我对于linq的查询没有触发索引的效果只是怀疑,并不确认。所以有没有高手知道,是不是这个问题。如果是应该怎么解决????

#9


求高手解决啊

#10


哎呀,Oracle 用Entity Framework,你不是自找麻烦嘛。建议使用 ALinq

#11


检查下EF生成的SQL语句,和直接写的有什么区别

#12


没有什么区别,拿过来用很快啊