MySQL表的行越多,查找行所需的时间就越长

时间:2015-07-01 08:35:02

标签: mysql

Hy,

我在MySQL中有一个707o行的innoDB表。我需要通过documentId列找到行,每个请求需要200毫秒。此列具有BTREE索引

  1. 获得一行(200毫秒)所需的时间是正常的,对吗?

  2. 表中的行越多,查找行所需的时间就越长,对吧?我的意思是,今天查询需要200毫秒,但当表格有20000行时,需要更多时间,对吗?

  3. 有没有办法执行查询,它总是在不关心表格中的行数的情况下同时进行?我认为没有,并且有很好的解决方案是索引列

  4. 我真正的问题是我正在执行一个批处理作业,我需要读取一个包含很多行的excel文件,基本上,对于文件中的每一行,我需要获取其documentID值并在数据库表。例如,如果文件包含80000行,则需要4.5小时

2 个答案:

答案 0 :(得分:0)

我猜你的意思是200K行。是的,除非你的系统中存在某种魔法,否则情况就会如此:)查询时间与你要求完成的工作量成正比,它不能是常数,它取决于运营数量。我会问为什么你需要总是从excel读取数据?您无法在数据库结构中一次性地将其移植一次,以使一切更加一致并减少开销。

查询所用的时间还取决于您如何执行搜索特定ID。 excel文件中的天真顺序搜索会给您整体的二次复杂性。根据文件的结构,您可以实现二进制搜索,以降低对数的复杂性。

这些只是建议,为了得出更明确的结论,应该提供更多细节。无论如何,我希望这对你有用。

答案 1 :(得分:0)

  1. 取决于查询,但如果它相对简单并从缓存返回单行,则200ms听起来很高。您需要对查询执行3并查看其执行的操作,是否选择了正确的索引等。

  2. 不一定。如果正确编制索引,即使行数多了很多,简单查询的性能也可能基本保持不变。

  3. 根据您的方案创建正确的索引/架构

  4. 我猜你的excel文件读取将成为你的瓶颈,而不是你的inno查询。