我正在部署一個Rails應用程序,它將來自各種第三方提供商的優惠券數據彙總到可搜索的數據庫中。搜索是針對每個優惠券的四個字段進行的:標題,優惠券代碼,說明和到期日期。多列數據庫索引和查詢速度
由於其中一些第三方提供商在保留其數據排序方面做得相當差,並且因爲我不希望重複的優惠券進入我的數據庫,所以我在這四列中實現了唯一的複合索引。這可以防止同一張優惠券不止一次插入到我的數據庫中。
鑑於我在搜索這些列(通過簡單的WHERE column LIKE %whatever%
暫時匹配),我希望這些列各自受益於索引它們的速度增益。
因此,這裏是我的問題:將整個複合索引所有列提供相同的搜索速度上漲,就好像我已經申請個人指標每個列?或者它只會保證行之間的唯一性?
稍微複雜一點是我在Rails中開發,所以我的問題與SQLite3和MySQL(以及我們將來要移植到的任何東西)有關,而不是一個特定的RDBMS。
我的猜測是索引將加速跨個別列搜索,但我真的沒有足夠的「數據庫底層」的專業知識來對該判斷充滿信心。
感謝您借用您的專業知識。
'WHERE LIKE%任何%'可以** **從來沒有使用一個索引列; 'WHERE列LIKE無論%'可以通過。 – Johan 2011-06-09 15:40:48
@Johan:哎唷!我沒有想過,儘管它確實有道理。這讓我有興趣儘快切換到更好的搜索機制(可能是思維獅身人面像)。感謝您指出了這一點。 – 2011-06-09 16:05:47
切換到獅身人面像或Lucene之前,我建議考慮MySQL全文搜索選項。可能正是你需要的。 http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html – bpgergo 2011-06-09 16:30:40