0

我有一张桌子。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。
所以提供什么其他条件并不重要,因为模型是关键。

4

1 回答 1

3
  1. 两个查询的结果不一定相同。结果,更多条件可能具有更少的行。
  2. 作为一般规则,您不能说更多条件会使其更快。在某些情况下,这是可能的,但不太可能。这完全取决于您在表上定义的索引类型。

是我关于 MySQL 中多列 where 子句和索引的较早答案之一

于 2013-09-09T11:26:40.810 回答