2

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

书籍表列:
=======================
出版商
作者
姓名
价格
出版日期
等。

我应该如何查询此表以找到具有良好性能的特定书籍?我现在正在做的是:

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

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

4

3 回答 3

4

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

如果您想支持对不同列进行广泛的用户指定搜索,您可以尝试单独为每一列建立索引。

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

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

有关的

于 2012-07-08T12:49:11.570 回答
2

对于您需要的条件,有多个这样的是完全可以的。我不会认为少于一打是多余的。我见过and没有性能问题的 30 秒查询。

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

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

于 2012-07-08T12:50:17.927 回答
2

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

一旦您拥有大量书籍行并实际看到性能问题,那么是时候重新审视您的架构了。在大多数情况下,您只需要一些索引来加快查找速度。查询之类的工具EXPLAIN有助于诊断执行查询时数据库在做什么。

所以简而言之,不要担心。

于 2012-07-08T12:50:56.550 回答