查询速度,根据条件数量?

时间:2013-09-09 11:17:52

标签: mysql sql select optimization multiple-conditions

我有一张桌子。 specs[id,name,store_id,section_id,category_id,user_id,model_id]
我的查询非常简单:

SELECT * FROM specs
WHERE
    store_id=1
    AND
    section_id=1
    AND
    category_id=1
    AND
    user_id=1
    AND
    model_id=1

我收到的结果是一系列规格 如果我将查询更改为:

SELECT * FROM specs WHERE model_id=1

我会得到相同的结果,因为该表可能有重复项(当然不包括id
数据样本(注意:

  id  |  name  |  model_id  |  section_id  |category_id  |  user_id
  ------------------------------------------------------------------
  1   | me     | 22         | 5            |   11        |   777
  2   | you    | 22         | 5            |   11        |   777
  3   | me     | 22         | 5            |   11        |   777
  4   | me     | 22         | 5            |   11        |   777
  5   | you    | 33         | 5            |   11        |   777
  6   | they   | 33         | 5            |   11        |   777
  7   | them   | 33         | 5            |   11        |   777
  8   | we     | 33         | 5            |   11        |   777
  9   | we     | 33         | 5            |   11        |   777
  10  | them   | 44         | 5            |   11        |   776
  11  | they   | 44         | 5            |   11        |   776
  12  | me     | 44         | 5            |   11        |   776
  13  | you    | 44         | 5            |   11        |   776
  14  | they   | 44         | 5            |   11        |   776
  15  | them   | 44         | 5            |   11        |   776

数据库是MySQL。

问题:由于该表将包含500k-1000k记录,使用第一个查询或第二个查询会更快吗?更多的条件会让它更快?慢?

修改

添加记录时,用户必须为所有列提供值。并且记录始终附加到model_id 因此,提供其他条件并不重要,因为模型是关键。

1 个答案:

答案 0 :(得分:3)

  1. 两个查询的结果不一定相同。因此,更多条件可能会减少行数。
  2. 作为一般规则,你不能说更多的条件会使它更快。在某些情况下,这是可能的,但不可能。这完全取决于您在桌面上定义的索引类型。
  3. 这是one of my older answer on multi-column where clauses and indexes in MySQL