有时PostgreSQL无法针对特定条件对索引进行最佳选择。例如,假设有一个包含几百万行的事务处理表,其中每天有数百行,并且该表具有四个索引:transaction_id,client_id,date和description。您要运行以下查询:SELECT client_id, SUM(amount)FROM transactionsWHERE date >= 'yesterday'::timestamp AND date < 'today'::timestamp AND description = 'Refund'GROUP BY client_idPostgreSQL可能选择使用索引transactions_description_idx而不是transactions_date_idx,这可能导致查询花费几分钟而不是不到一秒钟的时间。在这种情况下,您可以通过以下条件强制使用日期索引:SELECT client_id, SUM(amount)FROM transactionsWHERE date >= 'yesterday'::timestamp AND date < 'today'::timestamp AND description||'' = 'Refund'GROUP BY client_id