sql >> Databáze >  >> RDS >> PostgreSQL

Postgres ignoruje index časového razítka, proč?

Zkusme něco jiného. Navrhuji to pouze jako "odpověď" kvůli jeho délce a nemůžete formátovat komentář. Přistupujme k dotazu modulárně jako k řadě podmnožin, které se potřebují protnout. Podívejme se, jak dlouho trvá provedení každého z nich (prosím nahlaste). Nahraďte svá časová razítka za t1 a t2. Všimněte si, jak každý dotaz staví na předchozím, takže předchozí je „vložený pohled“.

EDIT:také prosím potvrďte sloupce v tabulce Sítě.

1

 select PM.receiver_id from private_messages PM
 where PM.create_at between (t1 and t2)

2

 select U.id, U.network_id from users U
 join
 (
   select PM.receiver_id from private_messages PM 
   where PM.create_at between (t1 and t2)
 ) as FOO
 on U.id = FOO.receiver_id

3

select N.* from networks N
join
(
select U.id, U.network_id from users U
 join
 (
   select PM.receiver_id from private_messages PM 
   where PM.create_at between (t1 and t2)
 ) as FOO
 on U.id = FOO.receiver_id
) as BAR
on N.id = BAR.network_id


  1. Hibernate:jaký je rozdíl mezi MySQLDialect a MySQLInnoDBDialect?

  2. MySQL Case/If/Then

  3. Zaznamenejte varování do tabulky

  4. Vyhněte se této běžné chybě při provádění uložené procedury v MS Access