2016-02-11 79 views
0

我是一名初学者,我需要一些帮助来加速以下查询。在INDEXES中,我也是一名初学者,我不太明白如何添加和使用它们。 如果有人可以请帮助我加快这个查询,我会深表感谢。 目前查询花费~10s加载。优化Mysql UNION查询以加快加载速度

显示行0 - 0(1个总计,查询花费10.2243秒)

SELECT `location2` AS `location` , '2' AS `number` 
FROM `properties` 
WHERE `price_from` 
BETWEEN 0 
AND 999999 
AND `country` = 'france' 
UNION SELECT `location3` AS `location` , '3' AS `number` 
FROM `properties` 
WHERE `price_from` 
BETWEEN 0 
AND 999999 
AND `location2` = 'france' 
UNION SELECT `location4` AS `location` , '4' AS `number` 
FROM `properties` 
WHERE `price_from` 
BETWEEN 0 
AND 999999 
AND `location3` = 'france' 
UNION SELECT `location5` AS `location` , '5' AS `number` 
FROM `properties` 
WHERE `price_from` 
BETWEEN 0 
AND 999999 
AND `location4` = 'france' 
UNION SELECT `location6` AS `location` , '6' AS `number` 
FROM `properties` 
WHERE `price_from` 
BETWEEN 0 
AND 999999 
AND `location5` = 'france' 
+0

正常化您的数据 – Strawberry

+0

谢谢@Strawberry。我已经计划规范化数据,但目前我正在寻求优化所述查询以加快装载时间。任何想法呢? – Kev

+0

是的。规范化数据。 – Strawberry

回答

0

不要张开跨列的阵列。相反,请根据需要制作具有尽可能多行数的另一个表。

通过该更改,您可以避开UNION,我们可以讨论如何优化需要的JOIN