Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 尽管查询速度很快,但显示大量行的速度很慢_Sql_Postgresql - Fatal编程技术网

Sql 尽管查询速度很快,但显示大量行的速度很慢

Sql 尽管查询速度很快,但显示大量行的速度很慢,sql,postgresql,Sql,Postgresql,我面临一个查询时间太长(大约5秒)的问题。我已经读了很多pg性能的帖子,但不知怎么的,他们把我弄糊涂了。希望你能帮助我 EXPLAIN ANALYZE SELECT e.uid AS employee_uid, loc.city, eco.company_name as company, et.tag, el.name as language, eq.qualification_type as qualification FROM employee e LEFT JOIN emplo

我面临一个查询时间太长(大约5秒)的问题。我已经读了很多pg性能的帖子,但不知怎么的,他们把我弄糊涂了。希望你能帮助我

EXPLAIN ANALYZE
  SELECT e.uid AS employee_uid, loc.city, eco.company_name as company, et.tag, el.name as language, eq.qualification_type as qualification
  FROM employee e
  LEFT JOIN employee_tag et ON et.employee_uid = e.uid
  LEFT JOIN employee_qualification eq ON eq.employee_uid = e.uid
  LEFT JOIN employee_address ea ON ea.employee_uid = e.uid
  LEFT JOIN address a ON ea.address = a.id
  LEFT JOIN location loc ON loc.id = a.location
  LEFT JOIN employee_spoken_language el ON el.employee_uid = e.uid
  LEFT JOIN employee_company eco ON eco.employee_uid = e.uid
  WHERE 
    e.is_activated = True
    AND e.is_expired = False
    AND eco.company_name IN ('mycompany')
    AND (e.uid IN ('_null') OR True = True)
“哈希右连接(成本=175.88..368.89行=7267宽度=105)(实际时间=4.563..18.427行=47902循环=1)”
“哈希条件:((et.employee\u uid)::text=(e.uid)::text)”
“->员工标签et上的序列扫描(成本=0.00..94.49行=4149宽度=71)(实际时间=0.004..0.466行=4149循环=1)”
“->散列(成本=167.60..167.60行=663宽度=91)(实际时间=4.547..4.547行=2737循环=1)”
“存储桶:1024批:1内存使用率:321kB”
“->哈希右连接(成本=137.72..167.60行=663宽度=91)(实际时间=2.366..3.359行=2737循环=1)”
“哈希条件:((eq.employee\u uid)::text=(e.uid)::text)”
“->Seq扫描员工资格eq(成本=0.00..20.17行=817宽度=64)(实际时间=0.004..0.098行=817圈=1)”
“->散列(成本=133.87..133.87行=308宽度=82)(实际时间=2.354..2.354行=821循环=1)”
“存储桶:1024批:1内存使用率:89kB”
“->哈希右连接(成本=109.86..133.87行=308宽度=82)(实际时间=1.534..1.992行=821循环=1)”
“哈希条件:((el.employee\u uid)::text=(e.uid)::text)”
“->员工口语el上的序列扫描(成本=0.00..17.95行=795宽度=64)(实际时间=0.003..0.078行=795圈=1)”
“->散列(成本=108.03..108.03行=147宽度=75)(实际时间=1.519..1.519行=283个循环=1)”
“存储桶:1024批:1内存使用率:29kB”
“->哈希右连接(成本=79.89..108.03行=147宽度=75)(实际时间=1.093..1.394行=283循环=1)”
“哈希条件:(loc.id=a.location)”
“->位置loc上的顺序扫描(成本=0.00..22.11行=911宽度=17)(实际时间=0.003..0.105行=911环路=1)”
“->散列(成本=78.05..78.05行=147宽度=74)(实际时间=1.073..1.073行=283循环=1)”
“存储桶:1024批:1内存使用率:30kB”
“->哈希右连接(成本=67.53..78.05行=147宽度=74)(实际时间=0.695..0.863行=283个循环=1)”
“哈希条件:(a.id=ea.address)”
“->地址a上的顺序扫描(成本=0.00..7.40行=440宽度=16)(实际时间=0.004..0.042行=440循环=1)”
“->散列(成本=65.69..65.69行=147宽度=74)(实际时间=0.684..0.684行=283循环=1)”
“存储桶:1024批:1内存使用率:30kB”
“->哈希右连接(成本=52.41..65.69行=147宽度=74)(实际时间=0.415..0.612行=283个循环=1)”
“哈希条件:((ea.employee\u uid)::text=(e.uid)::text)”
“->Seq扫描员工地址ea(成本=0.00..10.23行=423宽度=64)(实际时间=0.004..0.041行=423圈=1)”
“->散列(成本=50.76..50.76行=132宽度=66)(实际时间=0.398..0.398行=181循环=1)”
“存储桶:1024批:1内存使用量:17kB”
“->哈希联接(成本=8.85..50.76行=132宽度=66)(实际时间=0.138..0.327行=181循环=1)”
“哈希条件:((e.uid)::text=(eco.employee\u uid)::text)”
“->Seq扫描员工e(成本=0.00..39.79行=213宽度=61)(实际时间=0.016..0.124行=195圈=1)”
“过滤器:(已激活且(未过期))”
“由筛选器删除的行:184”
“->散列(成本=5.93..5.93行=234宽度=62)(实际时间=0.112..0.112行=234循环=1)”
“存储桶:1024批:1内存使用量:22kB”
“->Seq扫描员工\公司eco(成本=0.00..5.93行=234宽度=62)(实际时间=0.007..0.054行=234圈=1)”
“筛选器:((公司名称)::text='mycompany'::text)”
“计划时间:4.376毫秒”
“执行时间:19.929毫秒”

下面是解释结果:

“执行时间:19.929毫秒”
-查询本身只需要20毫秒,返回47902行。我猜是你的应用程序需要5秒钟来显示数据。或者您的网络速度较慢,发送数据的速度较慢。您会显示员工的所有城市、标签、资格和语言组合。这似乎没有多大意义。你为什么要证明雇员X在纽约有一个地址,说英语和意大利语,在西雅图也有一个地址,说英语和意大利语。您一次又一次地显示相同的数据。您可能需要进行单独的查询。许多外部联接。他们都需要吗?不是每个员工都至少有一个地址吗?员工至少会说一种语言吗?在
employee\u company