100行和1亿行之间不同

时间:2013-09-08 15:30:30

标签: mysql sql sql-server

认为我有两个表,每个表都有一个索引。

现在我通过索引列

连接表

我的问题是,每个表是否有100行或100万行,是否有任何不同的时间?

3 个答案:

答案 0 :(得分:2)

假设您正在图书馆中搜索一本书。图书馆有100本书还是拥有1亿本书,是否有时间不同?甚至图书馆也按类别和字母顺序很好地组织了这本书。它有所不同。计算机与我们人类没有什么不同,只是它可以比我们更快地完成一些任务。

假设我们有100本书要搜索。使用二进制搜索将采用log2(100)= 6.64操作。 100,000,000本书采用log2(100,000,000)= 26.57次操作。

答案 1 :(得分:1)

这取决于几件事

  1. 如果它们是一对一的,那么它们之间的关系是什么
  2. 如果它在哪里= some_key就可以了(并且关系是一对一的),你在查询什么
  3. 索引,在大表中你必须使用带键的列来防止表中包含100行的全表扫描,如果查询不使用索引,它将没有多大区别
  4. 一般来说,如果关系不同于一个和/或你使用的某些查询与“where = some_key”不同,那么速度的差异会有所不同

答案 2 :(得分:1)

当然存在差异(这就是为什么你不应该使用比生产数据库记录少得多的开发数据库的一个原因,当你推送到Prod时你不希望发现性能问题。) / p>

首先假设您要返回所有记录。如果你有100个记录表加入到100记录表中,那么返回的最多记录是10,000个记录(这将是一个交叉连接) 在百万记录表中加入百万记录表的大多数记录是1,000,000,000,000。显然,仅仅通过网络连接返回该数量的记录将花费更长的时间,就像打印一百万页而不是打印100页一样。

接下来,100记录表上的索引可能不会被使用,因为它可以很容易地放入内存中。但是较大的表可能会使用索引,因此有一个额外的查找步骤(可以在不使用大表中的索引的情况下加快查询速度),但更关键的是,它们可能不会用于某些查询能够使用指数。假设您使用此条件“WHERE Field1 LIKE'%test%'进行搜索。现在无法使用索引,并且必须分别检查一百万条记录的内容。是否需要更长时间才能读取百万页阅读100?数据库读取百万条记录也需要更长时间。