我是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,我认为这会杀死服务器。有更好的方法来搜索表格吗? 感谢
答案 0 :(得分:4)
您应该向表中添加索引以提高性能。
如果要支持不同列上的各种用户指定搜索,可以尝试单独索引每列。
如果在添加这些索引后仍然发现运行缓慢的特定查询,则可能需要添加MySQL可用于提高该查询性能的多列索引。您可以使用EXPLAIN
查看特定查询使用的索引。
您还应该知道,添加索引可以提高读取性能,但也会降低写入表的性能。如果写入速度也很重要,则应注意不要添加许多未使用的索引。
相关强>
答案 1 :(得分:2)
在你需要的条件下有多个像这样的完全没问题。
我不会认为不到十几个是过分的。我看过30个and
的查询没有性能问题。
根本不会“杀死服务器”。但是,这是一个尝试查询的好机会,看看它们运行了多长时间,然后尝试使用索引,其他表等来改进它们。
如果由于大量记录而导致性能问题,您可以将索引添加到各个字段。如果你有不到10,000条记录我就不会打扰。
答案 2 :(得分:2)
这很好,它不会杀死任何东西。尽量不要过早优化;确保它首先工作。
一旦你有大量 books 行并且实际看到性能问题,那么是时候重新访问你的架构了。在大多数情况下,您只需要一些索引来加速查找。像EXPLAIN
查询这样的工具有助于诊断数据库在执行查询时正在做什么。
简而言之,不要担心。