query_optimizer 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/README.rdoc +2 -1
- data/lib/query_optimizer/version.rb +1 -1
- data/lib/query_optimizer.rb +4 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a84bf981c1b8a7f3c07f43590478b70f7229a288
|
4
|
+
data.tar.gz: d8002be95bb78fd6e9abfb17a9581f5a47d1a373
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f4dee4b8038e7e154d74d58cb7a40ca71751d1a640ff266a7c3e25ec1e8cde98e4514c4191a245fea7c6b2e1073aafd7b1c8e74320907ad8de3791b8150bc82
|
7
|
+
data.tar.gz: e53f70803071d10027112d704e82afcea065cbcab1b7f32f4d5b229e314972b72d22522aaf4db87b19f1f36a84f2e33a8725ca72330add95a1c925be99b87be5
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# QueryOptimizer
|
2
2
|
|
3
|
-
|
3
|
+
This is rails gem which will minimize query for many_to_many relationship.
|
4
|
+
Minimize query by query_optimizer just pass your model name as QueryOptimizer.optimize_query(Model1,Model2)
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -20,11 +21,11 @@ Or install it yourself as:
|
|
20
21
|
|
21
22
|
## Usage
|
22
23
|
|
23
|
-
|
24
|
+
Refer https://github.com/akshaygoyal88/query_optimizer/blob/master/README.rdoc for usage
|
24
25
|
|
25
26
|
## Contributing
|
26
27
|
|
27
|
-
1. Fork it ( https://github.com/
|
28
|
+
1. Fork it ( https://github.com/akshaygoyal88/query_optimizer/fork )
|
28
29
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
30
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
30
31
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/README.rdoc
CHANGED
@@ -34,7 +34,8 @@ so to minimize query you can use query_optimizer you can just pass your model na
|
|
34
34
|
require 'query_optimizer'
|
35
35
|
QueryOptimizer.optimize_query(Post,Comment)
|
36
36
|
|
37
|
-
(1.1ms) SELECT posts
|
37
|
+
(1.1ms) SELECT posts.id AS posts_id,posts.name AS posts_name,posts.description AS posts_description,posts.created_at AS posts_created_at,posts.updated_at AS posts_updated_at,comments.id AS comments_id,comments.name AS comments_name,comments.description AS comments_description,comments.post_id AS comments_post_id,comments.created_at AS comments_created_at,comments.updated_at AS comments_updated_at FROM posts, comments where posts.id=comments.post_id
|
38
|
+
|
38
39
|
=> [{"posts_id"=>44, "posts_name"=>"name1", "posts_description"=>"desc1", "posts_created_at"=>2015-02-01 10:40:05 UTC, "posts_updated_at"=>2015-02-01 10:40:05 UTC, "comments_id"=>4, "comments_name"=>"gdfdhddffdd", "comments_description"=>nil, "comments_post_id"=>44, "comments_created_at"=>2015-10-10 16:49:12 UTC, "comments_updated_at"=>2015-10-10 16:49:12 UTC}, {"posts_id"=>45, "posts_name"=>"name2", "posts_description"=>"desc2", "posts_created_at"=>2015-02-01 10:40:05 UTC, "posts_updated_at"=>2015-02-01 10:40:05 UTC, "comments_id"=>5, "comments_name"=>"dhdfdfhdhdfhfd", "comments_description"=>nil, "comments_post_id"=>45, "comments_created_at"=>2015-10-10 16:49:19 UTC, "comments_updated_at"=>2015-10-10 16:49:19 UTC}, {"posts_id"=>44, "posts_name"=>"name3", "posts_description"=>"desc3", "posts_created_at"=>2015-02-01 10:40:05 UTC, "posts_updated_at"=>2015-02-01 10:40:05 UTC, "comments_id"=>6, "comments_name"=>"hfdhdfhdf", "comments_description"=>nil, "comments_post_id"=>44, "comments_created_at"=>2015-10-10 16:51:26 UTC, "comments_updated_at"=>2015-10-10 16:51:26 UTC}, {"posts_id"=>46, "posts_name"=>"name3", "posts_description"=>"desc3", "posts_created_at"=>2015-02-01 10:41:14 UTC, "posts_updated_at"=>2015-02-01 10:41:14 UTC, "comments_id"=>7, "comments_name"=>"dhdfdfhdfhdf", "comments_description"=>nil, "comments_post_id"=>46, "comments_created_at"=>2015-10-10 16:51:32 UTC, "comments_updated_at"=>2015-10-10 16:51:32 UTC}]
|
39
40
|
|
40
41
|
It will return posts and its related comments in a single array
|
data/lib/query_optimizer.rb
CHANGED
@@ -3,16 +3,14 @@ module QueryOptimizer
|
|
3
3
|
table1 = model1.table_name
|
4
4
|
table2 = model2.table_name
|
5
5
|
get_singular_name = table1.singularize
|
6
|
-
results = ActiveRecord::Base.connection.execute("SELECT #{table1}.*,#{table2}.* FROM #{table1} INNER JOIN #{table2} on #{table1}.id=#{table2}.#{get_singular_name}_id")
|
7
6
|
table1_columns = model1.column_names
|
8
7
|
table2_columns = model2.column_names
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
results.to_a.map{|i| Hash[both_columns.zip(i)]}
|
8
|
+
table1alias = table1_columns.map { |word| "#{table1}.#{word} AS #{table1}_#{word}" }.join(',')
|
9
|
+
table2alias = table2_columns.map { |word| "#{table2}.#{word} AS #{table2}_#{word}" }.join(',')
|
10
|
+
results = ActiveRecord::Base.connection.select_all("SELECT #{table1alias},#{table2alias} FROM #{table1}, #{table2} where #{table1}.id=#{table2}.#{get_singular_name}_id").to_a
|
13
11
|
end
|
14
12
|
end
|
15
13
|
|
16
14
|
class ActiveRecord::Base
|
17
15
|
include QueryOptimizer
|
18
|
-
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: query_optimizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akshay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|