2012-07-08 62 views
2

我是mySQL的新手。 我有一本書桌,我希望用戶能夠搜索書籍並找到一本特定的書。在mySQL中,大量的AND會成爲性能問題嗎?

書表列:
======================
出版商
作家

價格
出版日期

我應該如何查詢此表以查找具有良好性能的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

它不會終止服務器,除非您沒有列索引,並且您始終運行此查詢。找出WHERE條款中最常用的列,並在其上創建一個索引。 – 2012-07-08 12:49:41

回答

2

這是完全可以擁有多個這樣爲您所需要的條件。 我不會認爲少於十幾個是過度的。我已經看過30 and這個沒有性能問題的查詢。

它根本不會'殺死服務器'。然而,這是一個很好的機會來嘗試查詢,看看他們運行了多長時間,然後嘗試用索引,其他表格等來改進它們。

如果由於大量記錄導致性能問題,各個領域。如果你有不到10,000條記錄,我不會打擾。

4

您應該添加索引到您的表來提高性能。

如果您想在不同的列上支持各種用戶指定的搜索,您可以嘗試單獨編制索引。

如果在添加這些索引後仍然發現運行緩慢的特定查詢,則可能需要添加MySQL可用來改善該查詢性能的多列索引。您可以使用EXPLAIN查看特定查詢使用的索引。

您還應該知道,添加索引可以提高讀取性能,但也會降低寫入表的性能。如果寫入速度也很重要,那麼您應該小心不要添加許多未使用的索引。

相關

2

這很好,它不會殺死任何東西。儘量不要過早優化;確保它首先工作。

一旦你的 行,實際上出現性能問題一個顯著號碼,然後是重新審視你的架構的時候。在大多數情況下,您只需要一些索引來加速查找。諸如EXPLAIN查詢之類的工具有助於診斷執行查詢時數據庫正在執行的操作。

總之,別擔心。