Boa tarde! Estou com um problema de performance em uma query, talvez alguém possa me ajudar!
Situação: Postgres 9.1 Tabela produtos (id, nome) Tabela bad_words (id, word) Preciso basicamente selecionar todos os registros de products, removendo os produtos cujo nome possui alguma palavra listada na tabela bad_words. Uma query para realizar isso, não é complexa... Daria pra fazer assim: SELECT p.id, p.name FROM products p LEFT JOIN bad_words bw ON p.name ~* bw.word WHERE bw.id IS NULL Acredito que meu problema seja no número de cruzamentos realizados. Minha tabela de produtos, atualmente está com 200.000 registros, e a previsão é aumentar até 7.000.000 nos próximos meses. A tabela bad_words atualmente possui em torno de 400 registros. Rodando a consulta acima, o processamento leva em torno de 20 minutos (Intel i5 2.9ghz, 8gb ram, hd 7200rpm), inviável para a aplicação... Sei que milagres não existem, mas acredito que haja algum modo de indexar os valores envolvidos nesta consulta, ou melhorar a query, com a finalidade de diminuir o tempo total. Alguém tem alguma ideia? Agradeço pela ajuda!
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
