使用条件时选择字段的索引?

时间:2018-03-30 13:52:39

标签: mysql indexing

根据我的理解,作为一条经验法则,我应该在我选择的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

1 个答案:

答案 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万行,您将“需要”一个索引。