几个关键字段查询缓慢

在我的应用程序中,我有一个条件,当将数据放置在特定的搜索字段中时,该应用程序必须在某些表中查找。 执行此工作的查询太慢,我找不到更好的写方法。

SELECT DISTINCT viagem0_.id AS id1_134_,viagem0_.BASE_ID AS BASE_ID21_134_,viagem0_.categoriaPedagio AS categori2_134_,viagem0_.consumoKmL AS consumoK3_134_,viagem0_.custoCombustivel AS custoCom4_134_,viagem0_.custoLitro AS custoLit5_134_,viagem0_.custoPedagio AS custoPed6_134_,viagem0_.custoTotal AS custoTot7_134_,viagem0_.date AS date8_134_,viagem0_.dispara_id AS dispara22_134_,viagem0_.distanciaTotal AS distanci9_134_,viagem0_.embarcadora_id AS embarca23_134_,viagem0_.EMPRESA_ID AS EMPRESA24_134_,viagem0_.gastoCombustivel AS gastoCo10_134_,viagem0_.gerenciadora AS gerenci11_134_,viagem0_.kmPlanejada AS kmPlane12_134_,viagem0_.localidade_id AS localid25_134_,viagem0_.MACROGrupO_ID AS MACROGR26_134_,viagem0_.manifesto AS manifes13_134_,viagem0_.monitorada AS monitor14_134_,viagem0_.numLiberacao AS numLibe15_134_,viagem0_.numero AS numero16_134_,viagem0_.seguradora AS segurad17_134_,viagem0_.status AS status18_134_,viagem0_.telefoneContato_id AS telefon27_134_,viagem0_.tempo AS tempo19_134_,viagem0_.tipo AS tipo20_134_,viagem0_.veiculo_id AS veiculo28_134_
FROM Viagem viagem0_
LEFT OUTER JOIN Automovel veiculo1_ ON viagem0_.veiculo_id=veiculo1_.id
LEFT OUTER JOIN Viagem_Automovel composicoe2_ ON viagem0_.id=composicoe2_.Viagem_id
LEFT OUTER JOIN Automovel composicao3_ ON composicoe2_.composicoes_id=composicao3_.id
LEFT OUTER JOIN viagem_motorista motoristas4_ ON viagem0_.id=motoristas4_.VIAGEM_ID
LEFT OUTER JOIN Motorista motorista5_ ON motoristas4_.MOTORISTAS_ID=motorista5_.id
LEFT OUTER JOIN Pessoa pessoa6_ ON motorista5_.PESSOA_ID=pessoa6_.id
LEFT OUTER JOIN ElementoViagem elementosv7_ ON viagem0_.id=elementosv7_.viagem_id
LEFT OUTER JOIN PontoViagem pontoviage8_ ON elementosv7_.ponto_id=pontoviage8_.id
LEFT OUTER JOIN Documento documentos9_ ON elementosv7_.id=documentos9_.elementoViagem_id
CROSS JOIN Localidade localidade10_
CROSS JOIN Empresa empresa11_
WHERE viagem0_.localidade_id=localidade10_.id
  AND viagem0_.EMPRESA_ID=empresa11_.id
  AND (upper(veiculo1_.placa) LIKE '1336536'
   OR upper(composicao3_.placa) LIKE '1336536'
   OR upper(pessoa6_.nome) LIKE '1336536'
   OR upper(pontoviage8_.nome) LIKE '1336536'
   OR upper(localidade10_.nome) LIKE '1336536'
   OR upper(pontoviage8_.cnpj) LIKE '1336536'
   OR upper(pessoa6_.cpfCnpj) LIKE '1336536'
   OR (viagem0_.id||'') LIKE '1336536'
   OR upper(empresa11_.nome) LIKE '1336536'
   OR upper(empresa11_.cnpj) LIKE '1336536'
   OR upper(documentos9_.numero) LIKE '1336536')
 AND viagem0_.status<>'C'
 AND viagem0_.status<>'N'
 ORDER BY viagem0_.id DESC
 LIMIT 10;
QUERY PLAN
Limit  (cost=1335604.19..1335604.91 rows=10 width=171) (actual time=68256.100..68256.254 rows=1 loops=1)
  Buffers: shared hit=175517 read=197905,temp read=167046 written=167046
  I/O Timings: read=88397.284
  ->  Unique  (cost=1335604.19..1352666.55 rows=235343 width=171) (actual time=64815.780..64815.933 rows=1 loops=1)
        Buffers: shared hit=175517 read=197905,temp read=167046 written=167046
        I/O Timings: read=88397.284
        ->  Sort  (cost=1335604.19..1336192.54 rows=235343 width=171) (actual time=64815.770..64815.771 rows=2 loops=1)
              Sort Key: viagem0_.id DESC,viagem0_.base_id,viagem0_.categoriapedagio,viagem0_.consumokml,viagem0_.custocombustivel,viagem0_.custolitro,viagem0_.custopedagio,viagem0_.custototal,viagem0_.date,viagem0_.dispara_id,viagem0_.distanciatotal,viagem0_.embarcadora_id,viagem0_.empresa_id,viagem0_.gastocombustivel,viagem0_.gerenciadora,viagem0_.kmplanejada,viagem0_.localidade_id,viagem0_.macrogrupo_id,viagem0_.manifesto,viagem0_.monitorada,viagem0_.numliberacao,viagem0_.numero,viagem0_.seguradora,viagem0_.status,viagem0_.telefonecontato_id,viagem0_.tempo,viagem0_.tipo,viagem0_.veiculo_id
              Sort Method: quicksort  Memory: 25kB
              Buffers: shared hit=175517 read=197905,temp read=167046 written=167046
              I/O Timings: read=88397.284
              ->  Hash Join  (cost=919755.65..1314606.41 rows=235343 width=171) (actual time=48490.327..64815.593 rows=2 loops=1)
                    Hash Cond: (viagem0_.empresa_id = empresa11_.id)
                    Join Filter: ((upper((veiculo1_.placa)::text) ~~ '1336536'::text) OR (upper((composicao3_.placa)::text) ~~ '1336536'::text) OR (upper((pessoa6_.nome)::text) ~~ '1336536'::text) OR (upper((pontoviage8_.nome)::text) ~~ '1336536'::text) OR (upper((localidade10_.nome)::text) ~~ '1336536'::text) OR (upper((pontoviage8_.cnpj)::text) ~~ '1336536'::text) OR (upper((pessoa6_.cpfcnpj)::text) ~~ '1336536'::text) OR (((viagem0_.id)::text || ''::text) ~~ '1336536'::text) OR (upper((empresa11_.nome)::text) ~~ '1336536'::text) OR (upper((empresa11_.cnpj)::text) ~~ '1336536'::text) OR (upper((documentos9_.numero)::text) ~~ '1336536'::text))
                    Rows Removed by Join Filter: 4156758
                    Buffers: shared hit=175494 read=197905,temp read=167046 written=167046
                    I/O Timings: read=88397.284
                    ->  Hash Join  (cost=919717.73..1303030.32 rows=4387011 width=294) (actual time=42997.607..53546.036 rows=4156762 loops=1)
                          Hash Cond: (viagem0_.localidade_id = localidade10_.id)
                          Buffers: shared hit=175473 read=197905,temp read=167046 written=167046
                          I/O Timings: read=88397.284
                          ->  Hash Left Join  (cost=919655.25..1291424.82 rows=4387011 width=274) (actual time=42996.718..52705.086 rows=4157811 loops=1)
                                Hash Cond: (elementosv7_.ponto_id = pontoviage8_.id)
                                Buffers: shared hit=175451 read=197905,temp read=167046 written=167046
                                I/O Timings: read=88397.284
                                ->  Hash Right Join  (cost=911165.81..1271419.25 rows=4387011 width=241) (actual time=42873.957..50950.728 rows=4157811 loops=1)
                                      Hash Cond: (documentos9_.elementoviagem_id = elementosv7_.id)
                                      Buffers: shared hit=171935 read=197905,temp read=167046 written=167046
                                      I/O Timings: read=88397.284
                                      ->  Seq Scan on documento documentos9_  (cost=0.00..106054.72 rows=4466472 width=18) (actual time=0.128..1886.821 rows=4465911 loops=1)
                                            Buffers: shared hit=40725 read=20666
                                            I/O Timings: read=766.279
                                      ->  Hash  (cost=714949.17..714949.17 rows=4387011 width=239) (actual time=42870.431..42870.431 rows=3378013 loops=1)
                                            Buckets: 262144  Batches: 32  Memory Usage: 30276kB
                                            Buffers: shared hit=131210 read=177239,temp read=45560 written=150470
                                            I/O Timings: read=87631.004
                                            ->  Hash Right Join  (cost=406354.84..714949.17 rows=4387011 width=239) (actual time=34157.894..39838.762 rows=3378013 loops=1)
                                                  Hash Cond: (elementosv7_.viagem_id = viagem0_.id)
                                                  Buffers: shared hit=131210 read=177239,temp read=45560 written=45560
                                                  I/O Timings: read=87631.004
                                                  ->  Seq Scan on elementoviagem elementosv7_  (cost=0.00..143291.35 rows=5959135 width=24) (actual time=0.321..1671.419 rows=5948261 loops=1)
                                                        Buffers: shared hit=311 read=83389
                                                        I/O Timings: read=943.516
                                                  ->  Hash  (cost=364305.53..364305.53 rows=983065 width=223) (actual time=34154.455..34154.456 rows=983599 loops=1)
                                                        Buckets: 262144  Batches: 4  Memory Usage: 63059kB
                                                        Buffers: shared hit=130899 read=93850,temp written=21839
                                                        I/O Timings: read=86687.488
                                                        ->  Gather  (cost=76427.09..364305.53 rows=983065 width=223) (actual time=3986.350..33084.201 rows=983599 loops=1)
                                                              Workers Planned: 2
                                                              Workers Launched: 2
                                                              Buffers: shared hit=130899 read=93850
                                                              I/O Timings: read=86687.488
                                                              ->  Parallel Hash Left Join  (cost=75427.09..264999.03 rows=409610 width=223) (actual time=3957.158..33401.629 rows=327866 loops=3)
                                                                    Hash Cond: (motorista5_.pessoa_id = pessoa6_.id)
                                                                    Buffers: shared hit=130899 read=93850
                                                                    I/O Timings: read=86687.488
                                                                    ->  Parallel Hash Left Join  (cost=69392.60..257889.29 rows=409610 width=195) (actual time=2273.920..31402.992 rows=327866 loops=3)
                                                                          Hash Cond: (motoristas4_.motoristas_id = motorista5_.id)
                                                                          Buffers: shared hit=129909 read=91824
                                                                          I/O Timings: read=86510.625
                                                                          ->  Parallel Hash Left Join  (cost=63154.12..250575.56 rows=409610 width=195) (actual time=2219.195..31069.151 rows=327866 loops=3)
                                                                                Hash Cond: (viagem0_.id = motoristas4_.viagem_id)
                                                                                Buffers: shared hit=125419 read=91824
                                                                                I/O Timings: read=86510.625
                                                                                ->  Parallel Hash Left Join  (cost=43254.05..227449.27 rows=406264 width=187) (actual time=240.988..28715.994 rows=324951 loops=3)
                                                                                      Hash Cond: (composicoe2_.composicoes_id = composicao3_.id)
                                                                                      Buffers: shared hit=123874 read=86091
                                                                                      I/O Timings: read=81423.789
                                                                                      ->  Hash Left Join  (cost=23974.57..207103.31 rows=406264 width=187) (actual time=111.888..28458.723 rows=324951 loops=3)
                                                                                            Hash Cond: (viagem0_.id = composicoe2_.viagem_id)
                                                                                            Buffers: shared hit=106097 read=86091
                                                                                            I/O Timings: read=81423.789
                                                                                            ->  Parallel Hash Left Join  (cost=19279.48..200372.93 rows=406264 width=179) (actual time=51.363..28130.849 rows=322332 loops=3)
                                                                                                  Hash Cond: (viagem0_.veiculo_id = veiculo1_.id)
                                                                                                  Buffers: shared hit=103367 read=86091
                                                                                                  I/O Timings: read=81423.789
                                                                                                  ->  Parallel Seq Scan on viagem viagem0_  (cost=0.00..180026.97 rows=406264 width=171) (actual time=0.118..27775.297 rows=322332 loops=3)
                                                                                                        Filter: ((status <> 'C'::bpchar) AND (status <> 'N'::bpchar))
                                                                                                        Rows Removed by Filter: 122711
                                                                                                        Buffers: shared hit=85590 read=86091
                                                                                                        I/O Timings: read=81423.789
                                                                                                  ->  Parallel Hash  (cost=18444.77..18444.77 rows=66777 width=16) (actual time=50.185..50.187 rows=53422 loops=3)
                                                                                                        Buckets: 262144  Batches: 1  Memory Usage: 10848kB
                                                                                                        Buffers: shared hit=17777
                                                                                                        ->  Parallel Seq Scan on automovel veiculo1_  (cost=0.00..18444.77 rows=66777 width=16) (actual time=0.033..28.806 rows=53422 loops=3)
                                                                                                              Buffers: shared hit=17777
                                                                                            ->  Hash  (cost=2592.26..2592.26 rows=168226 width=16) (actual time=57.307..57.307 rows=168231 loops=3)
                                                                                                  Buckets: 262144  Batches: 1  Memory Usage: 9934kB
                                                                                                  Buffers: shared hit=2730
                                                                                                  ->  Seq Scan on viagem_automovel composicoe2_  (cost=0.00..2592.26 rows=168226 width=16) (actual time=0.035..21.807 rows=168231 loops=3)
                                                                                                        Buffers: shared hit=2730
                                                                                      ->  Parallel Hash  (cost=18444.77..18444.77 rows=66777 width=16) (actual time=127.303..127.304 rows=53422 loops=3)
                                                                                            Buckets: 262144  Batches: 1  Memory Usage: 10848kB
                                                                                            Buffers: shared hit=17777
                                                                                            ->  Parallel Seq Scan on automovel composicao3_  (cost=0.00..18444.77 rows=66777 width=16) (actual time=0.082..96.533 rows=53422 loops=3)
                                                                                                  Buffers: shared hit=17777
                                                                                ->  Parallel Hash  (cost=12887.81..12887.81 rows=560981 width=16) (actual time=1967.507..1967.507 rows=447826 loops=3)
                                                                                      Buckets: 2097152  Batches: 1  Memory Usage: 79456kB
                                                                                      Buffers: shared hit=1545 read=5733
                                                                                      I/O Timings: read=5086.836
                                                                                      ->  Parallel Seq Scan on viagem_motorista motoristas4_  (cost=0.00..12887.81 rows=560981 width=16) (actual time=1.735..1757.868 rows=447826 loops=3)
                                                                                            Buffers: shared hit=1545 read=5733
                                                                                            I/O Timings: read=5086.836
                                                                          ->  Parallel Hash  (cost=5267.10..5267.10 rows=77710 width=16) (actual time=53.544..53.544 rows=62030 loops=3)
                                                                                Buckets: 262144  Batches: 1  Memory Usage: 10816kB
                                                                                Buffers: shared hit=4490
                                                                                ->  Parallel Seq Scan on motorista motorista5_  (cost=0.00..5267.10 rows=77710 width=16) (actual time=0.096..31.112 rows=62030 loops=3)
                                                                                      Buffers: shared hit=4490
                                                                    ->  Parallel Hash  (cost=4303.11..4303.11 rows=138511 width=44) (actual time=1681.787..1681.788 rows=78485 loops=3)
                                                                          Buckets: 262144  Batches: 1  Memory Usage: 20704kB
                                                                          Buffers: shared hit=892 read=2026
                                                                          I/O Timings: read=176.863
                                                                          ->  Parallel Seq Scan on pessoa pessoa6_  (cost=0.00..4303.11 rows=138511 width=44) (actual time=1099.692..1175.619 rows=78485 loops=3)
                                                                                Buffers: shared hit=892 read=2026
                                                                                I/O Timings: read=176.863
                                ->  Hash  (cost=5726.42..5726.42 rows=221042 width=49) (actual time=121.324..121.324 rows=221000 loops=1)
                                      Buckets: 262144  Batches: 1  Memory Usage: 19628kB
                                      Buffers: shared hit=3516
                                      ->  Seq Scan on pontoviagem pontoviage8_  (cost=0.00..5726.42 rows=221042 width=49) (actual time=0.042..61.813 rows=221000 loops=1)
                                            Buffers: shared hit=3516
                          ->  Hash  (cost=39.99..39.99 rows=1799 width=28) (actual time=0.795..0.795 rows=1799 loops=1)
                                Buckets: 2048  Batches: 1  Memory Usage: 124kB
                                Buffers: shared hit=22
                                ->  Seq Scan on localidade localidade10_  (cost=0.00..39.99 rows=1799 width=28) (actual time=0.026..0.564 rows=1799 loops=1)
                                      Buffers: shared hit=22
                    ->  Hash  (cost=28.52..28.52 rows=752 width=32) (actual time=0.599..0.599 rows=752 loops=1)
                          Buckets: 1024  Batches: 1  Memory Usage: 56kB
                          Buffers: shared hit=21
                          ->  Seq Scan on empresa empresa11_  (cost=0.00..28.52 rows=752 width=32) (actual time=0.058..0.480 rows=752 loops=1)
                                Buffers: shared hit=21

计划时间:12.660毫秒 JIT:   功能:276   选项:内联true,最优化true,表达式true,变形true   时间:生成50.704 ms,内联171.346 ms,优化4109.569 ms,发射2446.882 ms,总计6778.500 ms 执行时间:68332.475 ms (136行)

wang787890 回答:几个关键字段查询缓慢

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3163646.html

大家都在问