我在查询我的网站时遇到了一些问题,该网站可以让用户搜索手机。这个想法是当用户选择过滤器 - 即“iPhone”时,只显示相关的搜索标准。
您可以在http://www.comparephonemarket.co.uk/search.php
查看功能包含所有交易的表格称为“选项”,看起来像这样:
model_make model_name model_basename model_colour
Apple iPhone iPhone 5S Blue
Apple iPhone iPhone 5S Black
Apple iPhone iPhone 5S Green
这实际上是一个包含所有电话交易的表格,用户可以根据这些条件进行过滤。
目前,在所有字段上使用索引进行查询大约需要7秒钟。大约有600k行。
生成选项的SQL语句如下所示:
SELECT
model_make as `element`
from
options
WHERE1 group by model_make UNION ALL
SELECT
model_basename as `element`
from
options
WHERE 1 GROUP BY model_basename UNION ALL
SELECT
model_colour as `element`
from
options
WHERE 1 GROUP BY model_basename;
结果表格如
element
Acer
Alcatel
Apple
Asus
iPhone 5c
Blue
然后在代码中,将WHERE子句放在子查询中的每个选项上,这些选项仅返回过滤的相关结果。
有没有人知道更优化的方式来执行此查询或更快地完成此操作?