
Optimisation des performances
Database indexing, query optimization, Bullet gem, rack-mini-profiler, concurrency/Puma, thread-safety, connection pool
1Quel est l'objectif principal de l'ajout d'un index sur une colonne de base de données ?
Quel est l'objectif principal de l'ajout d'un index sur une colonne de base de données ?
Réponse
Un index permet d'accélérer les requêtes de recherche en créant une structure de données optimisée (généralement un B-tree) qui évite de scanner toutes les lignes de la table. Sans index, la base de données effectue un sequential scan qui peut être très lent sur les tables volumineuses. Les colonnes fréquemment utilisées dans les clauses WHERE, ORDER BY ou les jointures sont des candidates idéales pour l'indexation.
2Comment créer un index composite sur les colonnes user_id et created_at dans une migration Rails ?
Comment créer un index composite sur les colonnes user_id et created_at dans une migration Rails ?
Réponse
La méthode add_index accepte un tableau de colonnes pour créer un index composite. L'ordre des colonnes est important : l'index sera efficace pour les requêtes filtrant d'abord sur user_id, puis sur created_at, mais pas pour les requêtes filtrant uniquement sur created_at. Un index composite est optimal pour les requêtes qui utilisent les colonnes dans l'ordre de gauche à droite.
3Qu'est-ce que le problème N+1 dans le contexte d'ActiveRecord ?
Qu'est-ce que le problème N+1 dans le contexte d'ActiveRecord ?
Réponse
Le problème N+1 survient lorsqu'une requête initiale récupère N enregistrements, puis N requêtes supplémentaires sont exécutées pour charger les associations de chaque enregistrement. Par exemple, charger 100 posts puis faire 100 requêtes individuelles pour les auteurs. Ce pattern multiplie le nombre de requêtes et dégrade sévèrement les performances. La solution est d'utiliser includes, preload ou eager_load pour charger les associations en une ou deux requêtes.
Quelle méthode ActiveRecord utiliser pour résoudre le problème N+1 en chargeant les associations à l'avance ?
Quel est le rôle du gem Bullet dans l'optimisation des performances Rails ?
+23 questions d'entretien
Autres sujets d'entretien Ruby on Rails
Les bases de Ruby
Programmation orientée objet en Ruby
Fondamentaux Rails
Routing & Controllers
Les bases d'ActiveRecord
Views & Templates ERB
Associations ActiveRecord
Requêtes ActiveRecord avancées
Formulaires Rails
Authentification & Autorisation
Asset Pipeline & Frontend moderne
Rails en mode API
Tests avec RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Stratégies de caching
Migrations avancées
Rails Engines & Apps modulaires
Design Patterns Rails
Métaprogrammation Ruby
Sécurité Rails
GraphQL avec Rails
Déploiement & Production
Monitoring & Logging
Stratégies d'upgrade Rails
Maîtrise Ruby on Rails pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement