我的表格为:products
,其中包含以下列(productCode
,productName
,productDescription
,quantityInStock
,buyPrice
,{{ 1}})
如果执行以下查询,image
上的索引是否有用? productName
?
答案 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(你真的需要所有行吗?)。