我有一个问题,无论我多么努力地尝试,我都无法解决问题。如何最大限度地提高性能?
这家公司从事市场分析工作,并有相当大的表格(300K-1M行)和许多专栏(想想250-300),我们做一些计算。
I'll试图让直行的问题:
的问题是数据的过滤。到目前为止,我尝试过的所有数据库都太慢,无法选择数据并将其返回。
目前我将整个表存储在内存中,并使用动态LINQ进行过滤。
然而,尽管这是相当快的(大约100毫秒来筛选250000行),我需要比这更好的结果...
有什么办法,我可以在我的代码改变的东西(没有数据模型)可以加速过滤吗?
我已经尝试使用:
DataTable.Select这是缓慢的。动态LINQ哪个更好,但是 还是太慢了。正常的LINQ(仅用于测试目的)几乎是 就足够了。从MySQL中获取并稍后处理 ,这很糟糕。
在这个项目中,我们认为,一些高性能的数据库将能够处理这个问题的开始,但我想:
H2(IKVM) HSQLDB(编译ODBC驱动程序) CubeSQL MySQL SQL SQLite ...
而且它们都非常缓慢地接口.NET并获得结果。
我也尝试将数据拆分成块,并在运行时将它们组合起来,以使需要过滤的数据总量更小。
这个宇宙中有什么办法可以让这个更快吗?
在此先感谢!
UPDATE
我只想补充一点,我还没有创建有关此数据库。
要添加一些数字,如果我做一个简单的选择2场的(visit_munic_name被索引)数据库查询窗口(SQLyog的)是这样的:
SELECT key1, key2 FROM table1 WHERE filter1 = filterValue1
它发生在225639行125毫秒。
为什么这么慢?我测试了2个不同的盒子。
当然,他们必须改变某些,显然?
说实话,这不是很多行。听起来像数据库结构需要一些严肃的关注。 – 2012-02-06 11:39:24
当你使用DB-网络请求本身或DB侧的SQL查询执行时,你检查过什么慢吗?如果网络请求/响应缓慢 - 请参阅您是否可以将数据库托管到应用程序附近,否则调整sql查询eprformance,表索引等 – sll 2012-02-06 11:41:01
您说选择数据对于您使用的所有数据库都很慢。这在我心中引起了一些红旗。你在选择中做任何复杂的连接吗?你有复杂的where子句吗?你的数据库是否正确编入索引? – CadentOrange 2012-02-06 11:42:19