我正在处理一个带有C#数据库的MySQL Windows窗体。
我必须搜索表中的一个大数据,这需要5到10分钟才能提供答案。(当我在MySql查询工具上运行查询时,也需要同样的时间)。
有什么搜索技术可以使我的搜索更快吗?目前,我使用的是带有select子句的简单where语句。Idictionary、hashtable等可以用它实现吗?
发布于 2011-06-27 18:00:52
您试过在where子句中搜索的列中添加索引吗?
您是在搜索100 k记录,还是正在返回100 k记录。在现代计算中,100 k记录是一滴水滴。正确地对列进行索引可以大大加快这一过程。
如果您的集合返回100 k记录,则进一步简化筛选,即使只返回前10条记录(确保排序结果)。将所有这些放在SQL查询中,并让MySql为您完成所有繁重的工作。一般来说,用户不需要一次看到100 k记录。
为了进一步回答您的问题,应该将结果填充到CLR对象中,并将其添加到某种类型的集合中。见System.Collections.Generic.List。一旦它们在这样的对象中,处理来自C#的数据应该是非常简单的。
希望这能有所帮助。
发布于 2011-06-27 17:57:34
如果你能把它记在记忆里,是的。根据搜索选项的不同,可以将算法应用于缓存最近搜索的项。
如果缓存不是一个选项,您应该研究如何正确地索引数据库表。
更正:无论缓存是否是一种选择,您都应该首先使用适当的索引和统计数据进行优化。
https://stackoverflow.com/questions/6496865
复制相似问题