mySQL查询优化 - 多个group by和UNION ALL

时间:2014-05-29 19:56:58

标签: mysql group-by

我在查询我的网站时遇到了一些问题,该网站可以让用户搜索手机。这个想法是当用户选择过滤器 - 即“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子句放在子查询中的每个选项上,这些选项仅返回过滤的相关结果。

有没有人知道更优化的方式来执行此查询或更快地完成此操作?

0 个答案:

没有答案