在这种情况下,指数是否有效?

时间:2017-12-29 19:04:25

标签: mysql sql indexing

我的表格为:products,其中包含以下列(productCodeproductNameproductDescriptionquantityInStockbuyPrice,{{ 1}})

如果执行以下查询,image上的索引是否有用? productName

2 个答案:

答案 0 :(得分:2)

对于这样的查询:

SELECT *
FROM products
WHERE productName = :productName;

强烈建议使用products(productName)的索引。

答案 1 :(得分:0)

您可以为该查询做的最好的事情是索引productName。 另外,我建议不要选择(*),而只选择你真正需要的列。

此外,如果只需要选择的列数很少,或者只需要选择一列,您甚至可以考虑覆盖索引。

例如:

SELECT productName, buyPrice
FROM products
WHERE productName = 'test';

对于上面的查询,我会为产品添加一个索引(productName,buyPrice)。这将允许数据库使用索引来过滤和检索数据,这应该非常快。

关于您在上述评论中提到的其他问题:

SELECT * FROM products ORDER BY buyPrice

我会在这种情况下为产品(buyPrice)编制索引 - 如果您通过ASC或DESC订购则无关紧要,只要它在查询中保持一致(ORDER BY中的所有列都是DESC或ASC)。

另外,我会避免使用select(*),并考虑在这些查询中添加LIMIT(你真的需要所有行吗?)。