-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
Hi, I have profiling turned on in mongodb, so I'm taking a look at some slower queries.
I have a has_and_belongs_to_many relationship and you can see the difference between the two queries below:
irb(main):022:0> b.transactions.query => #<Moped::Query:0x00000006758130 @selector={"$and"=>[{"_id"=>{"$in"=>["508987388cec7f020001e006", "508986ac8cec7f020001def8", "508987388cec7f020001e009", "508987398cec7f020001e00e", "508987398cec7f020001e012", "508987398cec7f020001e016", "508986aa8cec7f020001dee0", "508987398cec7f020001e01b", "508987398cec7f020001e01f", "508985438cec7f020001db23", "5089873a8cec7f020001e023", "508981bb8cec7f020001d7aa", "5089873a8cec7f020001e027", "5089873a8cec7f020001e02b", "508981148cec7f020001d6c4", "508983ba8cec7f020001d9ab", "508981988cec7f020001d761", "508983108cec7f020001d8dd", "508986eb8cec7f020001df69", "5089838a8cec7f020001d95e", "5089873b8cec7f020001e02f", "508986008cec7f020001dbea", "508981118cec7f020001d6a2", "5089811d8cec7f020001d6db", "5089873b8cec7f020001e033", "508986b08cec7f020001df3d", "5089873d8cec7f020001e037", "508985e48cec7f020001dbd5", "5089854a8cec7f020001db32", "508981b28cec7f020001d7a1", "5089873e8cec7f020001e04a", "5089873e8cec7f020001e051", "508986af8cec7f020001df1e", "508981108cec7f020001d698", "508983e98cec7f020001d9ef", "508981138cec7f020001d6bc", "508986ce8cec7f020001df47", "508985aa8cec7f020001dba7", "508985868cec7f020001db6d", "508986eb8cec7f020001df65", "508985bc8cec7f020001dbb5", "5089873f8cec7f020001e056", "5089873f8cec7f020001e059", "508987418cec7f020001e05d", "508981148cec7f020001d6c7", "508987458cec7f020001e064", "508985ab8cec7f020001dbab", "508985f08cec7f020001dbda", "508987478cec7f020001e073", "508987478cec7f020001e079", "508985f48cec7f020001dbe2", "508987488cec7f020001e085", "5089854a8cec7f020001db36", "508982b88cec7f020001d896", "508985398cec7f020001db1a", "508986ac8cec7f020001df08", "5089846c8cec7f020001da34", "508983598cec7f020001d913", "508983f18cec7f020001d9fc", "508984d08cec7f020001da6a", "508983718cec7f020001d926", "508981778cec7f020001d736", "508982fd8cec7f020001d8ce", "508982ec8cec7f020001d8bd", "508982888cec7f020001d887", "508987498cec7f020001e088", "508982c28cec7f020001d8a3", "5089820e8cec7f020001d829", "508986b08cec7f020001df39", "508987498cec7f020001e08d", "508986aa8cec7f020001dee4", "508986a98cec7f020001ded4", "508986ea8cec7f020001df61", "508986ac8cec7f020001df04", "508986a98cec7f020001dedc", "508986ad8cec7f020001df10", "508986a98cec7f020001ded8", "508986e88cec7f020001df51", "508985498cec7f020001db29", "5089858d8cec7f020001db73", "508986ad8cec7f020001df0c", "508985f18cec7f020001dbde", "508986ae8cec7f020001df1a", "5089874a8cec7f020001e092", "508986e98cec7f020001df55", "508986af8cec7f020001df28", "508986af8cec7f020001df21", "508986e78cec7f020001df4a", "508986aa8cec7f020001dee8", "508986ea8cec7f020001df5a", "5089874d8cec7f020001e09c", "508986ab8cec7f020001deef", "508986ac8cec7f020001defc", "508986ec8cec7f020001df6d"]}}]}, @collection=#<Moped::Collection:0x00000006758248 @database=#<Moped::Database:0x00000006758388 @session=#<Moped::Session:0x00000004fe4800 @cluster=<Moped::Cluster nodes=[<Moped::Node resolved_address="10.123.35.72:35457">, <Moped::Node resolved_address="10.78.230.174:35457">, <Moped::Node resolved_address="10.46.205.158:35457">]>, @context=#<Moped::Session::Context:0x00000004fe4300 @session=#<Moped::Session:0x00000004fe4800 ...>>, @options={"consistency"=>:strong, "database"=>"heroku_app2281692"}, @current_database=#<Moped::Database:0x00000006758388 ...>>, @name="heroku_app2281692">, @name="transactions">, @operation=#<Moped::Protocol::Query @length=0 @request_id=0 @response_to=0 @op_code=2004 @flags=[] @full_collection_name="heroku_app2281692.transactions" @skip=0 @limit=0 @selector={"$and"=>[{"_id"=>{"$in"=>["508987388cec7f020001e006", "508986ac8cec7f020001def8", "508987388cec7f020001e009", "508987398cec7f020001e00e", "508987398cec7f020001e012", "508987398cec7f020001e016", "508986aa8cec7f020001dee0", "508987398cec7f020001e01b", "508987398cec7f020001e01f", "508985438cec7f020001db23", "5089873a8cec7f020001e023", "508981bb8cec7f020001d7aa", "5089873a8cec7f020001e027", "5089873a8cec7f020001e02b", "508981148cec7f020001d6c4", "508983ba8cec7f020001d9ab", "508981988cec7f020001d761", "508983108cec7f020001d8dd", "508986eb8cec7f020001df69", "5089838a8cec7f020001d95e", "5089873b8cec7f020001e02f", "508986008cec7f020001dbea", "508981118cec7f020001d6a2", "5089811d8cec7f020001d6db", "5089873b8cec7f020001e033", "508986b08cec7f020001df3d", "5089873d8cec7f020001e037", "508985e48cec7f020001dbd5", "5089854a8cec7f020001db32", "508981b28cec7f020001d7a1", "5089873e8cec7f020001e04a", "5089873e8cec7f020001e051", "508986af8cec7f020001df1e", "508981108cec7f020001d698", "508983e98cec7f020001d9ef", "508981138cec7f020001d6bc", "508986ce8cec7f020001df47", "508985aa8cec7f020001dba7", "508985868cec7f020001db6d", "508986eb8cec7f020001df65", "508985bc8cec7f020001dbb5", "5089873f8cec7f020001e056", "5089873f8cec7f020001e059", "508987418cec7f020001e05d", "508981148cec7f020001d6c7", "508987458cec7f020001e064", "508985ab8cec7f020001dbab", "508985f08cec7f020001dbda", "508987478cec7f020001e073", "508987478cec7f020001e079", "508985f48cec7f020001dbe2", "508987488cec7f020001e085", "5089854a8cec7f020001db36", "508982b88cec7f020001d896", "508985398cec7f020001db1a", "508986ac8cec7f020001df08", "5089846c8cec7f020001da34", "508983598cec7f020001d913", "508983f18cec7f020001d9fc", "508984d08cec7f020001da6a", "508983718cec7f020001d926", "508981778cec7f020001d736", "508982fd8cec7f020001d8ce", "508982ec8cec7f020001d8bd", "508982888cec7f020001d887", "508987498cec7f020001e088", "508982c28cec7f020001d8a3", "5089820e8cec7f020001d829", "508986b08cec7f020001df39", "508987498cec7f020001e08d", "508986aa8cec7f020001dee4", "508986a98cec7f020001ded4", "508986ea8cec7f020001df61", "508986ac8cec7f020001df04", "508986a98cec7f020001dedc", "508986ad8cec7f020001df10", "508986a98cec7f020001ded8", "508986e88cec7f020001df51", "508985498cec7f020001db29", "5089858d8cec7f020001db73", "508986ad8cec7f020001df0c", "508985f18cec7f020001dbde", "508986ae8cec7f020001df1a", "5089874a8cec7f020001e092", "508986e98cec7f020001df55", "508986af8cec7f020001df28", "508986af8cec7f020001df21", "508986e78cec7f020001df4a", "508986aa8cec7f020001dee8", "508986ea8cec7f020001df5a", "5089874d8cec7f020001e09c", "508986ab8cec7f020001deef", "508986ac8cec7f020001defc", "508986ec8cec7f020001df6d"]}}]} @fields=nil>> irb(main):024:0> Transaction.where(:id.in => b.transaction_ids).query => #<Moped::Query:0x00000007108ce8 @selector={"_id"=>{"$in"=>["508987388cec7f020001e006", "508986ac8cec7f020001def8", "508987388cec7f020001e009", "508987398cec7f020001e00e", "508987398cec7f020001e012", "508987398cec7f020001e016", "508986aa8cec7f020001dee0", "508987398cec7f020001e01b", "508987398cec7f020001e01f", "508985438cec7f020001db23", "5089873a8cec7f020001e023", "508981bb8cec7f020001d7aa", "5089873a8cec7f020001e027", "5089873a8cec7f020001e02b", "508981148cec7f020001d6c4", "508983ba8cec7f020001d9ab", "508981988cec7f020001d761", "508983108cec7f020001d8dd", "508986eb8cec7f020001df69", "5089838a8cec7f020001d95e", "5089873b8cec7f020001e02f", "508986008cec7f020001dbea", "508981118cec7f020001d6a2", "5089811d8cec7f020001d6db", "5089873b8cec7f020001e033", "508986b08cec7f020001df3d", "5089873d8cec7f020001e037", "508985e48cec7f020001dbd5", "5089854a8cec7f020001db32", "508981b28cec7f020001d7a1", "5089873e8cec7f020001e04a", "5089873e8cec7f020001e051", "508986af8cec7f020001df1e", "508981108cec7f020001d698", "508983e98cec7f020001d9ef", "508981138cec7f020001d6bc", "508986ce8cec7f020001df47", "508985aa8cec7f020001dba7", "508985868cec7f020001db6d", "508986eb8cec7f020001df65", "508985bc8cec7f020001dbb5", "5089873f8cec7f020001e056", "5089873f8cec7f020001e059", "508987418cec7f020001e05d", "508981148cec7f020001d6c7", "508987458cec7f020001e064", "508985ab8cec7f020001dbab", "508985f08cec7f020001dbda", "508987478cec7f020001e073", "508987478cec7f020001e079", "508985f48cec7f020001dbe2", "508987488cec7f020001e085", "5089854a8cec7f020001db36", "508982b88cec7f020001d896", "508985398cec7f020001db1a", "508986ac8cec7f020001df08", "5089846c8cec7f020001da34", "508983598cec7f020001d913", "508983f18cec7f020001d9fc", "508984d08cec7f020001da6a", "508983718cec7f020001d926", "508981778cec7f020001d736", "508982fd8cec7f020001d8ce", "508982ec8cec7f020001d8bd", "508982888cec7f020001d887", "508987498cec7f020001e088", "508982c28cec7f020001d8a3", "5089820e8cec7f020001d829", "508986b08cec7f020001df39", "508987498cec7f020001e08d", "508986aa8cec7f020001dee4", "508986a98cec7f020001ded4", "508986ea8cec7f020001df61", "508986ac8cec7f020001df04", "508986a98cec7f020001dedc", "508986ad8cec7f020001df10", "508986a98cec7f020001ded8", "508986e88cec7f020001df51", "508985498cec7f020001db29", "5089858d8cec7f020001db73", "508986ad8cec7f020001df0c", "508985f18cec7f020001dbde", "508986ae8cec7f020001df1a", "5089874a8cec7f020001e092", "508986e98cec7f020001df55", "508986af8cec7f020001df28", "508986af8cec7f020001df21", "508986e78cec7f020001df4a", "508986aa8cec7f020001dee8", "508986ea8cec7f020001df5a", "5089874d8cec7f020001e09c", "508986ab8cec7f020001deef", "508986ac8cec7f020001defc", "508986ec8cec7f020001df6d"]}}, @collection=#<Moped::Collection:0x00000007108e00 @database=#<Moped::Database:0x00000007108ef0 @session=#<Moped::Session:0x00000004fe4800 @cluster=<Moped::Cluster nodes=[<Moped::Node resolved_address="10.123.35.72:35457">, <Moped::Node resolved_address="10.78.230.174:35457">, <Moped::Node resolved_address="10.46.205.158:35457">]>, @context=#<Moped::Session::Context:0x00000004fe4300 @session=#<Moped::Session:0x00000004fe4800 ...>>, @options={"consistency"=>:strong, "database"=>"heroku_app2281692"}, @current_database=#<Moped::Database:0x00000007108ef0 ...>>, @name="heroku_app2281692">, @name="transactions">, @operation=#<Moped::Protocol::Query @length=0 @request_id=0 @response_to=0 @op_code=2004 @flags=[] @full_collection_name="heroku_app2281692.transactions" @skip=0 @limit=0 @selector={"_id"=>{"$in"=>["508987388cec7f020001e006", "508986ac8cec7f020001def8", "508987388cec7f020001e009", "508987398cec7f020001e00e", "508987398cec7f020001e012", "508987398cec7f020001e016", "508986aa8cec7f020001dee0", "508987398cec7f020001e01b", "508987398cec7f020001e01f", "508985438cec7f020001db23", "5089873a8cec7f020001e023", "508981bb8cec7f020001d7aa", "5089873a8cec7f020001e027", "5089873a8cec7f020001e02b", "508981148cec7f020001d6c4", "508983ba8cec7f020001d9ab", "508981988cec7f020001d761", "508983108cec7f020001d8dd", "508986eb8cec7f020001df69", "5089838a8cec7f020001d95e", "5089873b8cec7f020001e02f", "508986008cec7f020001dbea", "508981118cec7f020001d6a2", "5089811d8cec7f020001d6db", "5089873b8cec7f020001e033", "508986b08cec7f020001df3d", "5089873d8cec7f020001e037", "508985e48cec7f020001dbd5", "5089854a8cec7f020001db32", "508981b28cec7f020001d7a1", "5089873e8cec7f020001e04a", "5089873e8cec7f020001e051", "508986af8cec7f020001df1e", "508981108cec7f020001d698", "508983e98cec7f020001d9ef", "508981138cec7f020001d6bc", "508986ce8cec7f020001df47", "508985aa8cec7f020001dba7", "508985868cec7f020001db6d", "508986eb8cec7f020001df65", "508985bc8cec7f020001dbb5", "5089873f8cec7f020001e056", "5089873f8cec7f020001e059", "508987418cec7f020001e05d", "508981148cec7f020001d6c7", "508987458cec7f020001e064", "508985ab8cec7f020001dbab", "508985f08cec7f020001dbda", "508987478cec7f020001e073", "508987478cec7f020001e079", "508985f48cec7f020001dbe2", "508987488cec7f020001e085", "5089854a8cec7f020001db36", "508982b88cec7f020001d896", "508985398cec7f020001db1a", "508986ac8cec7f020001df08", "5089846c8cec7f020001da34", "508983598cec7f020001d913", "508983f18cec7f020001d9fc", "508984d08cec7f020001da6a", "508983718cec7f020001d926", "508981778cec7f020001d736", "508982fd8cec7f020001d8ce", "508982ec8cec7f020001d8bd", "508982888cec7f020001d887", "508987498cec7f020001e088", "508982c28cec7f020001d8a3", "5089820e8cec7f020001d829", "508986b08cec7f020001df39", "508987498cec7f020001e08d", "508986aa8cec7f020001dee4", "508986a98cec7f020001ded4", "508986ea8cec7f020001df61", "508986ac8cec7f020001df04", "508986a98cec7f020001dedc", "508986ad8cec7f020001df10", "508986a98cec7f020001ded8", "508986e88cec7f020001df51", "508985498cec7f020001db29", "5089858d8cec7f020001db73", "508986ad8cec7f020001df0c", "508985f18cec7f020001dbde", "508986ae8cec7f020001df1a", "5089874a8cec7f020001e092", "508986e98cec7f020001df55", "508986af8cec7f020001df28", "508986af8cec7f020001df21", "508986e78cec7f020001df4a", "508986aa8cec7f020001dee8", "508986ea8cec7f020001df5a", "5089874d8cec7f020001e09c", "508986ab8cec7f020001deef", "508986ac8cec7f020001defc", "508986ec8cec7f020001df6d"]}} @fields=nil>> irb(main):025:0>
The first one contains an extra "$and"=>. Was just curious why, or if there are any performance implications for that?
Also, in the production queries I sometimes see $oid => ... in front of the transaction_ids.
"query": { "$query": { "$and": [ { "_id": { "$in": [ { "$oid": "4f34a5e5cb4464000196870b" }, { "$oid": "4f34a5e5cb44640001968721" }, { "$oid": "4f34a5e5cb44640001968736" }, { "$oid": "4f34a5e5cb4464000196873a" }, ...
Was trying to figure out what these are and, again...if any performance implications. Any help appreciated!