An index is like a shortcut that helps the database find data faster, similar to an index in a book that points to pages quickly.
Click to reveal answer
beginner
How do you create an index on a column in Rails migrations?
You use add_index :table_name, :column_name inside a migration file to create an index on that column.
Click to reveal answer
intermediate
Why should you use indexes carefully?
Indexes speed up reading data but slow down writing data because the index needs updating. So, use them only on columns you search often.
Click to reveal answer
intermediate
What does a unique index do?
A unique index makes sure that all values in the indexed column are different, preventing duplicate entries.
Click to reveal answer
beginner
How do you remove an index in Rails?
You use remove_index :table_name, :column_name in a migration to delete an index.
Click to reveal answer
Which Rails migration command creates an index on the 'email' column of the 'users' table?
Aadd_column :users, :email_index
Bcreate_index :users, :email
Cadd_index :users, :email
Dindex_add :users, :email
✗ Incorrect
The correct syntax to add an index is add_index :table_name, :column_name.
What is the main benefit of adding an index to a database column?
AFaster data retrieval
BMore storage space
CSlower queries
DAutomatic backups
✗ Incorrect
Indexes help the database find data faster, improving query speed.
What is a potential downside of having too many indexes?
ASlower data insertion and updates
BFaster data insertion
CNo effect on performance
DDatabase crashes
✗ Incorrect
Indexes need updating when data changes, which can slow down insert and update operations.
How do you enforce uniqueness of values in a column using an index in Rails?
Aadd_unique_index :table, :column
Badd_index :table, :column, unique: true
Cadd_index :table, :column, unique: false
Dcreate_unique :table, :column
✗ Incorrect
You add unique: true option to add_index to enforce uniqueness.
Which command removes an index on the 'username' column in the 'accounts' table?
Adrop_index :accounts, :username
Bremove_column :accounts, :username
Cdelete_index :accounts, :username
Dremove_index :accounts, :username
✗ Incorrect
The correct command to remove an index is remove_index :table_name, :column_name.
Explain what a database index is and why it is useful.
Think about how you find a topic quickly in a book.
You got /3 concepts.
Describe how to create and remove an index in Rails migrations.
Use Rails migration commands for managing indexes.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of creating an index in a Rails database?
easy
A. To store more data in the database
B. To speed up data searches by creating shortcuts
C. To delete duplicate records automatically
D. To backup the database regularly
Solution
Step 1: Understand what an index does
An index helps the database find data faster by creating a shortcut to the data location.
Step 2: Compare options with the purpose
Only To speed up data searches by creating shortcuts correctly describes speeding up data searches, while others describe unrelated tasks.
Final Answer:
To speed up data searches by creating shortcuts -> Option B
Quick Check:
Index = Faster search [OK]
Hint: Indexes speed up searches by creating shortcuts [OK]
Common Mistakes:
Thinking indexes store more data
Confusing indexes with backups
Believing indexes delete duplicates automatically
2. Which of the following is the correct syntax to add an index on the email column of the users table in a Rails migration?
easy
A. add_index :users, :email
B. add_index users, email
C. addIndex(:users, :email)
D. index_add :users, :email
Solution
Step 1: Recall Rails migration syntax for adding index
The correct method is add_index with the table name as a symbol and the column name as a symbol.
Step 2: Check each option's syntax
add_index :users, :email uses correct symbols and method name. The other options have syntax errors or wrong method names like missing symbols, camelCase, or incorrect method.
But running migration gives an error. What is the likely problem?
medium
A. The index name is too long
B. The name option is not allowed in add_index
C. The syntax is missing parentheses
D. The name option should be index_name
Solution
Step 1: Understand index name length limits
Database systems like PostgreSQL limit index name length (usually 63 characters). A too long name causes errors.
Step 2: Check the given index name
The name 'index_products_on_name_which_is_too_long_for_postgresql_63_char_limit' exceeds the database's maximum identifier length (typically 63 characters in PostgreSQL), causing the migration to fail.
Step 3: Confirm other options
The name option is valid in add_index, parentheses are optional in Ruby, and index_name is not a valid option.
Final Answer:
The index name is too long -> Option A
Quick Check:
Index name length limit causes errors [OK]
Hint: Check index name length if migration errors occur [OK]
Common Mistakes:
Thinking name option is invalid
Adding unnecessary parentheses
Using wrong option names like index_name
5. You want to create a composite unique index on first_name and last_name columns in the employees table to prevent duplicate full names. Which migration code is correct?
hard
A. add_index :employees, first_name, last_name, unique: true
B. add_index :employees, :first_name, :last_name, unique: true
C. add_index :employees, [:first_name, :last_name], unique: true
D. add_index :employees, [:first_name, :last_name], unique: false
Solution
Step 1: Understand composite index syntax
To create an index on multiple columns, pass an array of symbols for those columns.
Step 2: Check uniqueness requirement
Setting unique: true ensures no duplicate combinations of first_name and last_name.
Step 3: Evaluate options
add_index :employees, [:first_name, :last_name], unique: true correctly uses an array and unique true. The other options have wrong argument formats (separate arguments instead of array, missing symbols) or set unique: false, which does not prevent duplicates.
Final Answer:
add_index :employees, [:first_name, :last_name], unique: true -> Option C
Quick Check:
Composite unique index = array + unique: true [OK]
Hint: Use array for multiple columns and unique: true for uniqueness [OK]
Common Mistakes:
Passing columns as separate arguments instead of array
Forgetting unique: true for uniqueness
Using unique: false when uniqueness is needed
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.