Lazy Indexing

  • 2,807 views
Uploaded on

Easily optimize your Rails app by adding database indexes where you need them.

Easily optimize your Rails app by adding database indexes where you need them.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,807
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
61
Comments
1
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. LAZY INDEXING matt aimonetti sdruby
  • 2. before we start I’m not a Database Administrator This talk only covers MySQL You will still need to understand indexing Dubbed version of this presentation will be available from Patrick ;)
  • 3. indexing SELECT * FROM users WHERE last_name = 'Aimonetti'; NO INDEX look at each row in the table, one at a time, to find all matching records (full table scan = SLOW)
  • 4. indexing SELECT * FROM users WHERE last_name = 'Aimonetti'; INDEX simply follows the b-tree data structure until the Aimonetti entries have been found = WAY FASTER
  • 5. indexing class User < ActiveRecord::Base has_many :team_members, :dependent => :destroy has_many :projects, :through => :team_members end current_user.projects SELECT `projects`.* FROM `projects` INNER JOIN team_members ON projects.id = team_members.project_id WHERE ((`team_members`.user_id = 1))
  • 6. indexing how to know what indexes to create?
  • 7. indexing N? HE W Every time you are using one of these associations in a model: belongs_to, has_many, has_one, or has_and_belongs_to_many association
  • 8. indexing N? HE W ✓ use a join in your query ✓query non-foreign-key column ✓ sort on a column or combination of columns
  • 9. T? indexing HA W EXPLAIN obtain information about how MySQL executes a SELECT statement
  • 10. indexing query-reviewer plugin http://code.google.com/p/query-reviewer/ by Kongregate and David Stevenson
  • 11. indexing add an index from your migrations: add_index :invoices, [:client_id, :invoiced_on] remove an index from your migrations: remove_index :invoices, [:client_id, :invoiced_on]
  • 12. indexing resources: http://code.google.com/p/query-reviewer/ http://weblog.jamisbuck.org/2006/10/23/indexing-for-db-performance http://www.mysqlperformanceblog.com/