Available inFrenchEnglishGermanHindiPortugueseRussianSpanish
SQL et bases de données pour entretiens
Écrivez seul une jointure, un GROUP BY ou une fonction fenêtre corrects, puis lisez ce que le moteur en a fait : le plan d'EXPLAIN, l'index choisi, l'anomalie d'isolation à laquelle votre transaction s'expose. Pour des ingénieurs backend face à un tour base de données ; la syntaxe SQL est acquise, pas enseignée. Quatre-vingt-cinq cartes, de la sémantique des jointures et de la logique de NULL aux B-trees, au MVCC et aux niveaux d'isolation ; réplication et sharding relèvent d'Entretien system design.
Le second nombre de cost=0.00..8.30 est masqué. Qu'estime-t-il ?
Le coût total du nœud, toutes ses lignes renvoyées
— Ce ne sont pas des millisecondes : l'unité appartient au planificateur.
— Que minimise le planificateur quand il n'y a pas de LIMIT ?
Source
Le couple, c'est le coût de démarrage puis le coût total, dans des unités arbitraires du planificateur, calées par tradition sur une lecture séquentielle de page à 1.0 (manuel PostgreSQL, « Using EXPLAIN »). Deux conséquences à dire à voix haute : un coût ne se compare qu'à celui d'un autre plan pour la même requête, jamais à des millisecondes ; et le coût d'un nœud contient déjà celui de tous ses enfants, donc la ligne du haut, c'est la requête entière. On le confond souvent avec le premier nombre, le coût de démarrage, auquel le planificateur donne beaucoup de poids dès qu'un LIMIT signifie que seule une partie de la sortie du nœud sera consommée.