MySQL查询运行非常慢

用户名

我有一个包含7个表的Mysql数据库。我的问题是数据库中有数百万条记录,以下查询需要大量时间。我该怎么办?

(SELECT 'res' AS TBL
      , mlsnum
      , streetname
      , streetnum
      , listdate
      , gpext_latitude
      , gpext_longitude
      , zipcode
      , listprice
      , beds
      , bathsfull
      , sqftbldg
      , modified
      , yearbuilt
   FROM rets_property_res
  WHERE liststatus = "active")
  UNION 
    ALL
(SELECT 'rnt' AS TBL
      , mlsnum
      , streetname
      , streetnum
      , listdate
      , gpext_latitude
      , gpext_longitude
      , zipcode
      , listprice
      , beds
      , bathsfull
      , sqftbldg
      , modified
      , yearbuilt
   FROM rets_property_rnt
  WHERE liststatus = "active")
  UNION  
    ALL
(SELECT 'lnd' AS TBL
      , mlsnum
      , streetname
      , streetnum
      , listdate
      , gpext_latitude
      , gpext_longitude
      , zipcode
      , listprice
      , NULL AS BEDS
      , NULL AS BATHSFULL
      , NULL AS SQFTBLDG
      , modified
      , NULL AS YEARBUILT
   FROM rets_property_lnd
  WHERE liststatus = "active")
  UNION
    ALL
(SELECT 'hir' AS TBL
      , mlsnum
      , streetname
      , streetnum
      , listdate
      , gpext_latitude
      , gpext_longitude
      , zipcode
      , listprice
      , beds
      , bathsfull
      , sqftbldg
      , modified
      , yearbuilt
   FROM rets_property_hir
  WHERE liststatus = "active")
  UNION
    ALL
(SELECT 'cnd' AS TBL
      , mlsnum
      , streetname
      , streetnum
      , listdate
      , gpext_latitude
      , gpext_longitude
      , zipcode
      , listprice
      , beds
      , bathsfull
      , sqftbldg
      , modified
      , yearbuilt
   FROM rets_property_cnd
  WHERE liststatus = "active")
  UNION 
    ALL
(SELECT 'mul' AS TBL
      , mlsnum
      , streetname
      , streetnum
      , listdate
      , gpext_latitude
      , gpext_longitude
      , zipcode
      , listprice
      , NULL AS BEDS
      , NULL AS BATHSFULL
      , sqftbldg
      , modified
      , yearbuilt
   FROM rets_property_mul
  WHERE liststatus = "active")
  ORDER 
     BY listdate DESC
  LIMIT 0, 48 
戈登·利诺夫(Gordon Linoff)

所有查询都是不同的。请尝试更换UNIONUNION ALL不必删除重复项应该可以节省很多。

为了节省更多,然后将每个子查询限制为48行,并将它们的短语设置为:

SELECT 'res' AS TBL, . . .
FROM rets_property_res
WHERE liststatus = 'active'
ORDER BY listdate DESC
LIMIT 48

在和的每个表上都有一个索引(liststatus, listdate),查询可能会变得非常快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

非常非常慢的查询

来自分类Dev

试图找到导致LEFT JOIN MySQL查询非常慢的原因

来自分类Dev

读取订单非常慢的mysql查询(联接和分组依据)

来自分类Dev

使用OR子句的MySQL JOIN查询非常慢

来自分类Dev

Cassandra简单查询运行非常慢

来自分类Dev

PostgreSQL查询非常慢

来自分类Dev

MySQL非常慢的子查询优化

来自分类Dev

MySQL子查询非常慢

来自分类Dev

回溯查询非常慢

来自分类Dev

MySQL非常慢的查询

来自分类Dev

MYSQL查询执行速度非常慢

来自分类Dev

MySQL查询返回无效行并且非常慢

来自分类Dev

SSIS查询非常慢

来自分类Dev

迁移到mysql 5.7后查询非常慢

来自分类Dev

从2个表中选择时MySQL查询非常慢

来自分类Dev

MySQL选择查询非常慢

来自分类Dev

对于某些参数,SQL查询非常慢(MySQL)

来自分类Dev

大表查询运行非常慢

来自分类Dev

Mysql表更新查询非常慢,并且每天都在增加

来自分类Dev

使用where子句时,mysql select查询非常慢

来自分类Dev

即使使用INNER JOIN而不是IN,MySQL查询也非常慢

来自分类Dev

加快非常慢的查询

来自分类Dev

MYSQL(NOT IN)查询非常慢

来自分类Dev

使用OR子句的MySQL JOIN查询非常慢

来自分类Dev

MySQL查询联接语句非常慢

来自分类Dev

MySQL大表-查询非常慢

来自分类Dev

查询动作非常慢

来自分类Dev

使用SELECT子查询的UPDATE在MySQL 5.7上运行非常慢(但在5.5上很好)

来自分类Dev

Mysql嵌套查询速度非常慢