添加字段以优化MySQL查询

Bri*_*ian 0 mysql sql database-design data-modeling

我有一个包含3个字段的MySQL表:

  • 地点
  • 变量

我经常使用以下查询:

SELECT * 
  FROM Table 
 WHERE Location = '$Location' 
   AND Variable = '$Variable' 
ORDER BY Location, Variable
Run Code Online (Sandbox Code Playgroud)

我的表中有超过一百万行,查询有点慢.如果我添加一个字段VariableLocation,即变量和位置组合,它会提高查询速度吗?我可以将查询更改为:

SELECT * 
  FROM Table 
 WHERE VariableLocation = '$Location$Variable' 
ORDER BY VariableLocation
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 6

我会为列添加覆盖索引,location并且variable:

ALTER TABLE 
  ADD INDEX (variable, location);
Run Code Online (Sandbox Code Playgroud)

......但如果变量和位置对是唯一的,它们应该是主键.

将列组合在一起可能会导致更多的悲伤而不是它的价值.例如,如果您需要通过locationvariable仅提取记录,则必须对子查询中的值进行子串.