No modo padrão, o plugin lê o arquivo CSV a cada cotação de frete. Pra tabelas pequenas isso é instantâneo. Pra tabelas grandes (milhares de linhas), começa a pesar — especialmente no Black Friday.
O modo banco de dados importa a tabela pra uma estrutura indexada do MySQL. A busca passa a ser por índice, em vez de varredura linear. Reduz tempo de cálculo em até 90% em tabelas grandes.
Quando ativar
| Cenário | Recomendação |
|---|---|
| Tabela com até ~500 linhas | CSV está ok |
| Tabela com 1.000-10.000 linhas | Avalie modo DB |
| Tabela com 10.000+ linhas | Modo DB obrigatório |
| Picos de tráfego (BF, datas) | Modo DB independente do tamanho |
Como ativar
- Suba o CSV normalmente nas configurações do método e mapeie as colunas.
- Logo abaixo da área de mapeamento, clique em Iniciar Importação.
- O plugin cria registros na tabela
wp_wcts_rates. Em arquivos grandes isso roda em segundo plano via Action Scheduler. - Quando terminar, marque a opção Usar Banco de Dados e salve.
- O plugin agora consulta o MySQL em vez do CSV.
Se a fila do Action Scheduler está parada, force o processamento via WP-CLI:
wp action-scheduler run --force
Útil em servidores com cron desabilitado.
Forçar reimportação
Se você atualizou o CSV, é preciso reimportar pra que o banco de dados reflita. Clique em Reimportar Tabela (mesmo lugar onde antes era "Iniciar Importação").
A reimportação substitui os registros antigos. Não é incremental.
Voltar pro modo CSV
Desmarque Usar Banco de Dados e salve. O plugin volta a ler o arquivo. Os dados no banco continuam lá — você pode reativar quando quiser.
Esquema da tabela
A tabela criada é wp_wcts_rates (prefixo wp_ muda conforme seu site):
id INT PK
instance_id INT -- vínculo com a instância do método de envio
postcode_start INT
postcode_end INT
weight_start DECIMAL
weight_end DECIMAL
cost DECIMAL
delivery_time TINYINT
label VARCHAR(255)
created_at TIMESTAMP
Há índice composto (instance_id, postcode_start, postcode_end) que é o que torna a busca rápida.
Mesmo CSV, instâncias diferentes
Cada método de envio tem instance_id único. Se você usa o mesmo CSV em duas áreas de entrega diferentes, são duas importações separadas, cada uma marcada com seu instance_id.
Não tem como compartilhar a importação entre instâncias — é por design, pra que cada uma possa ser desativada/atualizada independente.
Caveats
- A importação é uma cópia do CSV no momento do clique. Editar o CSV depois não afeta o banco — você precisa reimportar.
- Filtros que modificam linhas em tempo de leitura (
wcts_pre_rules,wcts_custom_rules_database) continuam funcionando, com versões específicas pra cada modo.