我想寫MySQL查詢進行高級搜索我的網站的MySQL查詢,網站分類的網站,我想過濾的廣告,我有:寫進行高級搜索
- t_userads
- t_useradsvalues
的useradsvalues包含userad值,用戶選擇,useradsvalues表結構:
- ID
- userAdID
- fieldID
- optionID
的字段和選項在另一個表中已經定義。
例如:寶馬車需要的廣告已經彩色申請ID是10 &綠色選擇標識爲33也是門領域的ID是8 ANS 4doors選項ID是15
現在我試着寫
SELECT
*
FROM `t_userads`
WHERE
(`categoryID` = 53 OR `categoryID` = 54 OR `categoryID` = 141)
AND `countryID` = 8
AND `ad_active` = 1
AND `id` IN (
SELECT
`useradID`
FROM `t_useradsvals`
WHERE (`fieldID` = 10 AND `optionID` = 33) AND `useradID` IN (
SELECT
`useradID`
FROM `t_useradsvals`
WHERE (`fieldID` = 8 AND `optionID` = 15)
)
)
我得到了正確的結果,但mysql查詢花了大約6秒來執行(我有5000個廣告),這是一個問題,因爲如果我有100,000個廣告會如何處理?
謝謝。
閱讀關於使用JOIN和限制,索引... – Shomz
還可以考慮在(53,54,141)中使用categoryId。您可以參考:http://stackoverflow.com/questions/782915/mysql-or-vs-in-performance獲取經驗數據。 – aztechy