将索引添加到mysql动态列

时间:2011-06-22 12:00:23

标签: mysql indexing

我有一个select子句,它有一个where子句:WHERE CONCAT(att.subjectId,'#',att.classId)IN('132#100')。我在subjectId和classId上添加了一个复合索引,但这些索引对于这样的动态列是否有用。如果没有,可以在动态列上创建一个列,如CONCAT(att.subjectId,'#',att.classId)。

2 个答案:

答案 0 :(得分:1)

最好我知道MySQL无法在表达式/函数结果上创建索引。

解决方法是使用触发器填充额外字段并对其进行索引。

答案 1 :(得分:0)

可能,函数不是“where”子句的最佳选择,它们强制dbms执行“全扫描”,这会导致性能下降。

我认为最好使用少数“(att.subjectId ='132'和att.classId ='100')”与“OR”连接(对于“IN”列表中的每个术语)并添加一些索引分隔列。