我有一张桌子。 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 因此,提供其他条件并不重要,因为模型是关键。
答案 0 :(得分:3)
这是one of my older answer on multi-column where clauses and indexes in MySQL。