根据我的理解,作为一条经验法则,我应该在我选择的Where
条款中的字段上做一个索引:
Select CustomerName from Orders Where CustomerID=10
我想要一个关于CustomerID的索引,但不需要CustomerName1
上的索引。我知道它比这更复杂,但至少作为这个问题的起点:)
我的问题是,如果我在/ Select
字段中添加一个条件,那实质上现在变成了一个需要索引的Where
子句吗?
Select If(CustomerSalution is NULL,CustomerName,concat(CustomerSalutation,' ',CustomerName)) as CustomerName from Orders Where CustomerID=10
答案 0 :(得分:0)
有关如何为常见情况编写最佳索引的简要讨论,请参阅http://mysql.rjweb.org/doc.php/index_cookbook_mysql。
对于您的案例:
SELECT IF(... ((multiple columns mentioned)) ..)
from Orders
Where CustomerID=10
有关
SELECTs
可以使用上述任何一个索引。
“需要索引” - 除了表现之外,没有什么“需要”索引。如果没有任何索引,您的DCT_matrix = orig_img(row: row + blocksize-1, col: col + blocksize-1);
将只扫描整个表格,检查每一行。对于100行,您可能不会注意到。对于100万行,您将“需要”一个索引。