P
Phlip
To ensure your test cases call efficient MySQL...
def test_my_case
assert_efficient_sql do
# just wrap them in this block!
end
end
The assertion intercepts and copies out your MySQL SELECT statements, then
calls EXPLAIN on each one, and inspects the results for common problems.
The goal is test cases that resist database pessimization, even as you change
your data relations, to add new features. If you run your tests after
every few changes, you can easily detect which change broke your database's
indices and relations.
Blog:
http://www.oreillynet.com/ruby/blog/2008/01/assert_efficient_sql.html
RDocs:
http://efficient-sql.rubyforge.org/
A critique:
http://enfranchisedmind.com/blog/2008/01/14/assert_efficient_sql/
def test_my_case
assert_efficient_sql do
# just wrap them in this block!
end
end
The assertion intercepts and copies out your MySQL SELECT statements, then
calls EXPLAIN on each one, and inspects the results for common problems.
The goal is test cases that resist database pessimization, even as you change
your data relations, to add new features. If you run your tests after
every few changes, you can easily detect which change broke your database's
indices and relations.
Blog:
http://www.oreillynet.com/ruby/blog/2008/01/assert_efficient_sql.html
RDocs:
http://efficient-sql.rubyforge.org/
A critique:
http://enfranchisedmind.com/blog/2008/01/14/assert_efficient_sql/