Indexation Mnesia et optimisation des requêtes
Accélérez les lectures Mnesia avec des index secondaires, des requêtes QLC et un choix judicieux des types de tables afin de conserver des recherches distribuées rapides.
Indexation Mnesia et optimisation des requêtes est une leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Erlang OTP: Distributed & Fault-Tolerant Systems Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Cost of Scanning
By default Mnesia can find a record fast only by its primary key. Searching by any other field forces a full table scan — slow on large tables. Indexes and queries fix this.
Secondary Indexes
A secondary index lets Mnesia look up records by a non-key field in roughly constant time, at the cost of extra storage and slightly slower writes.
Creating an Index
Add an index on a field position with mnesia:add_table_index/2.
mnesia:add_table_index(user, email).Querying via an Index
Use index_read/3 to fetch all records whose indexed field matches a value.
mnesia:index_read(user, "a@b.com", email).Pattern Matching with match_object
match_object/1 finds records matching a pattern record where _ means any value.
Pattern = #user{id = '_', name = "Alice", _ = '_'},
mnesia:match_object(Pattern).Introducing QLC
QLC (Query List Comprehensions) gives a SQL-like syntax over Mnesia tables, with the compiler optimizing index use.
-include_lib("stdlib/include/qlc.hrl").A QLC Query
Write list-comprehension style queries against a table handle from mnesia:table/1.
Q = qlc:q([U || U <- mnesia:table(user), U#user.age > 18]),
mnesia:transaction(fun() -> qlc:e(Q) end).Table Type Choices
Mnesia tables can be ram_copies (fast, volatile), disc_copies (RAM + disk), or disc_only_copies (disk only, low memory). Pick by speed vs durability needs.
set, ordered_set, bag
The table type matters too: set (one record per key), ordered_set (sorted keys, enables range queries), and bag (multiple records per key).
Measuring Performance
Use mnesia:table_info(user, size) and timing around queries to confirm an index actually helps before adding it everywhere.
mnesia:table_info(user, size).Indexes and Writes
Every secondary index must be updated on each write, so adding many indexes slows inserts and updates. Index only the fields you actually query by, and drop unused indexes with del_table_index/2.
mnesia:del_table_index(user, email).Quick Check
Test your Mnesia optimization knowledge.
Recap
You learned to optimize Mnesia reads:
- Non-key searches scan the whole table unless indexed
- Add indexes with
add_table_index/2, query withindex_read/3 - QLC gives SQL-like queries that exploit indexes
- Choose table copy type (ram/disc) and structure (set/ordered_set/bag) by need
- Always measure before optimizing
Questions Fréquemment Posées
La leçon « Indexation Mnesia et optimisation des requêtes » est-elle gratuite ?
Oui — le texte complet de « Indexation Mnesia et optimisation des requêtes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming, passe à CoddyKit PRO. Le cours Erlang OTP: Distributed & Fault-Tolerant Systems Programming comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Indexation Mnesia et optimisation des requêtes » ?
Accélérez les lectures Mnesia avec des index secondaires, des requêtes QLC et un choix judicieux des types de tables afin de conserver des recherches distribuées rapides. Tu pratiques Erlang OTP: Distributed & Fault-Tolerant Systems Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Erlang OTP: Distributed & Fault-Tolerant Systems Programming ?
Aucune expérience préalable n'est requise. Erlang OTP: Distributed & Fault-Tolerant Systems Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Indexation Mnesia et optimisation des requêtes » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming ?
Oui. Chaque leçon Erlang OTP: Distributed & Fault-Tolerant Systems Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fondamentaux et schéma de Mnesia
- Transactions et manipulation des données
- Mnesia distribuée et réplication
- Indexation Mnesia et optimisation des requêtes