true do |t| t.i-6ren">
gpt4 book ai didi

sql - 如何在 Rails 控制台中测试添加索引的性能?

转载 作者:行者123 更新时间:2023-11-29 12:22:22 25 4
gpt4 key购买 nike

我想添加索引以提高我的应用性能。

我希望您衡量添加的索引的性能。

例如我有下表:

create_table "classifications", :force => true do |t|
t.integer "app_id"
t.integer "user_id"
t.integer "topic_id"
t.string "targit_type"
t.integer "targit_id"
t.datetime "created_at"
t.datetime "updated_at"
end

我考虑在这里添加三个索引:

# Classification
add_index :classifications, :app_id, name: "index_classifications_on_app_id"
add_index :classifications, :user_id, name: "index_classifications_on_user_id"
add_index :classifications, [:target_id, :targit_type], name: "index_classifications_on_targit_id_and_targit_type"

所以我想衡量这种变化的表现。

如何做才是最好的方式?我应该在 Rails 控制台中这样做吗?

>> Agreement.find_by_user_id_and_review_id(User.last.id, Review.last.id)                                                                              
User Load (14.2ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
Review Load (4.5ms) SELECT "reviews".* FROM "reviews" ORDER BY "reviews"."id" DESC LIMIT 1
Agreement Load (2.2ms) SELECT "agreements".* FROM "agreements" WHERE "agreements"."user_id" = 2064 AND "agreements"."review_id" = 1557 LIMIT 1

最佳答案

一种可能是在该表上查找查询并测量创建索引前后的时间。

PostgreSQL 提供了一些关于表和索引的统计信息(9.1 docs)。
我喜欢使用 pg_stat_user_indexes 来查看有关索引的所有统计信息。
尝试查看它,我认为您会在那里找到非常有用的信息。
您还应该检查 pg_stat_user_tables 以检查在表上运行了多少次全表扫描。

关于sql - 如何在 Rails 控制台中测试添加索引的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13509769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com