为布尔列创建索引

时间:2015-05-26 09:57:14

标签: ruby-on-rails database postgresql indexing

我的表有5个布尔列。

on_stock | paid | received_payment | on_the_way | received

如何为此表创建索引?我应该这样做吗?我想优化这样的查询:

SELECT "order".* FROM "order" INNER JOIN "seller_users" ON "order"."seller_foreign_id" = "seller_users"."google_id" 
WHERE(((("order"."on_stock" <> true AND "order"."on_the_way" <> true ) AND "order"."paid" <> true ) AND "order"."received_payment" <> true ) AND "order"."received" <> true ) AND ("seller_users"."google_id" = 'lala@gmail.com' ) 
ORDER BY "order"."updated_at" DESC ;

当我尝试添加此索引时 - 没有任何反应。不使用此索引。

 add_index :order, [:on_stock, :on_the_way, :paid, :received_payment, :received], :name => "state_index"

如果我为每列添加单独的index - 也没有任何反应。

EXPLAIN ANALYZE输出: http://explain.depesz.com/s/FS2

1 个答案:

答案 0 :(得分:1)

您的表总共有8行,在这种情况下不需要索引。对where子句测试这8行中的每一行比在这里使用索引要快得多。