Skip to content

Instantly share code, notes, and snippets.

@drusepth
Created October 17, 2018 20:08
Show Gist options
  • Save drusepth/3ea78cea99d9514ba6a599cad27f815c to your computer and use it in GitHub Desktop.
Save drusepth/3ea78cea99d9514ba6a599cad27f815c to your computer and use it in GitHub Desktop.
chained_query = nil
Rails.application.config.content_types[:all].each do |content_type_class|
if chained_query.nil?
chained_query = content_type_class.select(:id, :name)
else
chained_query = content_type_class.select(:id, :name).union(chained_query)
end
end
chained_query.count
(10684.4ms) SELECT COUNT(*) FROM ( (SELECT "towns"."id", "towns"."name" FROM "towns" WHERE "towns"."deleted_at" IS NULL) UNION (SELECT "technologies".* FROM ( (SELECT "technologies"."id", "technologies"."name" FROM "technologies" WHERE "technologies"."deleted_at" IS NULL) UNION (SELECT "scenes".* FROM ( (SELECT "scenes"."id", "scenes"."name" FROM "scenes" WHERE "scenes"."deleted_at" IS NULL) UNION (SELECT "religions".* FROM ( (SELECT "religions"."id", "religions"."name" FROM "religions" WHERE "religions"."deleted_at" IS NULL) UNION (SELECT "races".* FROM ( (SELECT "races"."id", "races"."name" FROM "races" WHERE "races"."deleted_at" IS NULL) UNION (SELECT "planets".* FROM ( (SELECT "planets"."id", "planets"."name" FROM "planets" WHERE "planets"."deleted_at" IS NULL) UNION (SELECT "magics".* FROM ( (SELECT "magics"."id", "magics"."name" FROM "magics" WHERE "magics"."deleted_at" IS NULL) UNION (SELECT "languages".* FROM ( (SELECT "languages"."id", "languages"."name" FROM "languages" WHERE "languages"."deleted_at" IS NULL) UNION (SELECT "landmarks".* FROM ( (SELECT "landmarks"."id", "landmarks"."name" FROM "landmarks" WHERE "landmarks"."deleted_at" IS NULL) UNION (SELECT "groups".* FROM ( (SELECT "groups"."id", "groups"."name" FROM "groups" WHERE "groups"."deleted_at" IS NULL) UNION (SELECT "governments".* FROM ( (SELECT "governments"."id", "governments"."name" FROM "governments" WHERE "governments"."deleted_at" IS NULL) UNION (SELECT "floras".* FROM ( (SELECT "floras"."id", "floras"."name" FROM "floras" WHERE "floras"."deleted_at" IS NULL) UNION (SELECT "deities".* FROM ( (SELECT "deities"."id", "deities"."name" FROM "deities" WHERE "deities"."deleted_at" IS NULL) UNION (SELECT "creatures".* FROM ( (SELECT "creatures"."id", "creatures"."name" FROM "creatures" WHERE "creatures"."deleted_at" IS NULL) UNION (SELECT "countries".* FROM ( (SELECT "countries"."id", "countries"."name" FROM "countries" WHERE "countries"."deleted_at" IS NULL) UNION (SELECT "items".* FROM ( (SELECT "items"."id", "items"."name" FROM "items" WHERE "items"."deleted_at" IS NULL) UNION (SELECT "locations".* FROM ( (SELECT "locations"."id", "locations"."name" FROM "locations" WHERE "locations"."deleted_at" IS NULL) UNION (SELECT "characters".* FROM ( (SELECT "characters"."id", "characters"."name" FROM "characters" WHERE "characters"."deleted_at" IS NULL) UNION (SELECT "universes"."id", "universes"."name" FROM "universes" WHERE "universes"."deleted_at" IS NULL) ) "characters") ) "locations") ) "items") ) "countries") ) "creatures") ) "deities") ) "floras") ) "governments") ) "groups") ) "landmarks") ) "languages") ) "magics") ) "planets") ) "races") ) "religions") ) "scenes") ) "technologies") ) "towns"
=> 1054574
@drusepth
Copy link
Author

With user_id scoping, 120ms:

irb(main):027:0> chained_query.count
   (121.3ms)  SELECT COUNT(*) FROM ( (SELECT "towns"."id", "towns"."name" FROM "towns" WHERE "towns"."deleted_at" IS NULL AND "towns"."user_id" = $1) UNION (SELECT "technologies".* FROM ( (SELECT "technologies"."id", "technologies"."name" FROM "technologies" WHERE "technologies"."deleted_at" IS NULL AND "technologies"."user_id" = $2) UNION (SELECT "scenes".* FROM ( (SELECT "scenes"."id", "scenes"."name" FROM "scenes" WHERE "scenes"."deleted_at" IS NULL AND "scenes"."user_id" = $3) UNION (SELECT "religions".* FROM ( (SELECT "religions"."id", "religions"."name" FROM "religions" WHERE "religions"."deleted_at" IS NULL AND "religions"."user_id" = $4) UNION (SELECT "races".* FROM ( (SELECT "races"."id", "races"."name" FROM "races" WHERE "races"."deleted_at" IS NULL AND "races"."user_id" = $5) UNION (SELECT "planets".* FROM ( (SELECT "planets"."id", "planets"."name" FROM "planets" WHERE "planets"."deleted_at" IS NULL AND "planets"."user_id" = $6) UNION (SELECT "magics".* FROM ( (SELECT "magics"."id", "magics"."name" FROM "magics" WHERE "magics"."deleted_at" IS NULL AND "magics"."user_id" = $7) UNION (SELECT "languages".* FROM ( (SELECT "languages"."id", "languages"."name" FROM "languages" WHERE "languages"."deleted_at" IS NULL AND "languages"."user_id" = $8) UNION (SELECT "landmarks".* FROM ( (SELECT "landmarks"."id", "landmarks"."name" FROM "landmarks" WHERE "landmarks"."deleted_at" IS NULL AND "landmarks"."user_id" = $9) UNION (SELECT "groups".* FROM ( (SELECT "groups"."id", "groups"."name" FROM "groups" WHERE "groups"."deleted_at" IS NULL AND "groups"."user_id" = $10) UNION (SELECT "governments".* FROM ( (SELECT "governments"."id", "governments"."name" FROM "governments" WHERE "governments"."deleted_at" IS NULL AND "governments"."user_id" = $11) UNION (SELECT "floras".* FROM ( (SELECT "floras"."id", "floras"."name" FROM "floras" WHERE "floras"."deleted_at" IS NULL AND "floras"."user_id" = $12) UNION (SELECT "deities".* FROM ( (SELECT "deities"."id", "deities"."name" FROM "deities" WHERE "deities"."deleted_at" IS NULL AND "deities"."user_id" = $13) UNION (SELECT "creatures".* FROM ( (SELECT "creatures"."id", "creatures"."name" FROM "creatures" WHERE "creatures"."deleted_at" IS NULL AND "creatures"."user_id" = $14) UNION (SELECT "countries".* FROM ( (SELECT "countries"."id", "countries"."name" FROM "countries" WHERE "countries"."deleted_at" IS NULL AND "countries"."user_id" = $15) UNION (SELECT "items".* FROM ( (SELECT "items"."id", "items"."name" FROM "items" WHERE "items"."deleted_at" IS NULL AND "items"."user_id" = $16) UNION (SELECT "locations".* FROM ( (SELECT "locations"."id", "locations"."name" FROM "locations" WHERE "locations"."deleted_at" IS NULL AND "locations"."user_id" = $17) UNION (SELECT "characters".* FROM ( (SELECT "characters"."id", "characters"."name" FROM "characters" WHERE "characters"."deleted_at" IS NULL AND "characters"."user_id" = $18) UNION (SELECT "universes"."id", "universes"."name" FROM "universes" WHERE "universes"."deleted_at" IS NULL AND "universes"."user_id" = $19) ) "characters") ) "locations") ) "items") ) "countries") ) "creatures") ) "deities") ) "floras") ) "governments") ) "groups") ) "landmarks") ) "languages") ) "magics") ) "planets") ) "races") ) "religions") ) "scenes") ) "technologies") ) "towns"  [["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5], ["user_id", 5]]
=> 403

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment