我必須對每個數百萬條目的大型數據庫執行高級搜索查詢。動態優化查詢以獲得最佳結果
我們不想硬編碼查詢,而是動態地提出查詢。高級搜索允許您根據各種參數進行搜索 - 日期,來自其他列的ID,包括多個order_id,order_item一次在搜索字段中提供。實際上,批量訂單搜索是它的主要焦點。
因此,查詢框架的方式是這個應用程序的核心。
我在尋找什麼我應該尋找的建議,或優化查詢的最佳做法。對於EG-:
在where條件,具有更好的索引中的列,應先搜索,然後又parameter.Basically select * from orders where order_id in (a,b,c....) and relayed=true;
比select * from orders where relayed=true and order_id in (a,b,c....);
好得多。作爲中繼有50只指數百分比它可以是真或假,所以得到的查詢集仍然很大
另外,作爲有很多條目的負荷,這是一個好主意 - http://explainextended.com/2009/08/18/passing-parameters-in-mysql-in-list-vs-temporary-table/
拿出通用的例子來說明你關於select,join,where,order_by的觀點。應該如何構建這樣的大型表上的查詢?
我對這個問題的一般性質表示歉意,但坦率地認爲這可能會有所幫助。
但是... MySQL有它自己的優化器。它爲你做了這一切。 – 2013-03-08 10:28:30
@TomvanderWoerdt - 如果是這樣,我會很高興。但它沒有辦法。 http://stackoverflow.com/questions/141278/subqueries-vs-joins – 2013-03-08 10:31:14
這取決於MySQL的版本。該帖子是從2008年以來相當過時,雖然我仍然會使用聯合對子查詢,而不是使用IN。 WHERE子句的順序應該不是我想要的。除此之外,您需要先進行連接以排除大多數記錄(可能會使用STRAIGHT_JOIN強制解決此問題) – Kickstart 2013-03-08 10:37:18