我正在尝试为我的网站的高级搜索编写 mysql 查询,该网站是分类网站,我正在尝试过滤广告,我有:
- t_userads
- t_useradsvalues
useradsvalues 包含用户选择的 userad 值,useradsvalues 表结构:
- ID
- 用户广告ID
- 字段ID
- 选项ID
字段和选项已在另一个表中定义。
例如:需要宝马汽车的广告,颜色字段 ID 为 10,绿色选项 ID 为 33,门字段 ID 为 8,四门选项 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 个广告会怎样?
谢谢你。