大量的AND会在mySQL中成为性能问题吗?

时间:2012-07-08 12:46:55

标签: mysql performance

我是mySQL的新手。 我有一个书桌,我希望用户能够搜索书籍并找到一本特定的书。

书籍表栏目:
   ======================
   出版商
   作家
   命名
   价格
   出版日期
   等

如何查询此表以查找具有良好性能的specefic书?我现在在做的是:

SELECT name,writer,publisher,price 
FROM books
WHERE publisher='publisher' 
AND writer='wirter' 
AND name='name' 
AND price<='price' 
AND publishingdate>='publishingdate' 
etc.

但是有太多的AND,我认为这会杀死服务器。有更好的方法来搜索表格吗? 感谢

3 个答案:

答案 0 :(得分:4)

您应该向表中添加索引以提高性能。

如果要支持不同列上的各种用户指定搜索,可以尝试单独索引每列。

如果在添加这些索引后仍然发现运行缓慢的特定查询,则可能需要添加MySQL可用于提高该查询性能的多列索引。您可以使用EXPLAIN查看特定查询使用的索引。

您还应该知道,添加索引可以提高读取性能,但也会降低写入表的性能。如果写入速度也很重要,则应注意不要添加许多未使用的索引。

相关

答案 1 :(得分:2)

在你需要的条件下有多个像这样的完全没问题。 我不会认为不到十几个是过分的。我看过30个and的查询没有性能问题。

根本不会“杀死服务器”。但是,这是一个尝试查询的好机会,看看它们运行了多长时间,然后尝试使用索引,其他表等来改进它们。

如果由于大量记录而导致性能问题,您可以将索引添加到各个字段。如果你有不到10,000条记录我就不会打扰。

答案 2 :(得分:2)

这很好,它不会杀死任何东西。尽量不要过早优化;确保它首先工作。

一旦你有大量 books 行并且实际看到性能问题,那么是时候重新访问你的架构了。在大多数情况下,您只需要一些索引来加速查找。像EXPLAIN查询这样的工具有助于诊断数据库在执行查询时正在做什么。

简而言之,不要担心。