[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:en:database\u002Fmysql-query-optimization":4,"config":214},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":115,"samples":129},"database","Database","","mysql-query-optimization","Mysql Query Optimization","en",75,2475,[14,15,16],"junior","mid","senior",[18,21,24,27,30,33,36,39,42,45,48,51,54,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112],{"key":19,"name":20,"count":11},"backup-recovery","Backup Recovery",{"key":22,"name":23,"count":11},"data-modeling","Data Modeling",{"key":25,"name":26,"count":11},"indexing","Indexing",{"key":28,"name":29,"count":11},"mongodb-aggregation","Mongodb Aggregation",{"key":31,"name":32,"count":11},"mongodb-indexes-queries","Mongodb Indexes Queries",{"key":34,"name":35,"count":11},"mongodb-operations","Mongodb Operations",{"key":37,"name":38,"count":11},"mongodb-replication-sharding","Mongodb Replication Sharding",{"key":40,"name":41,"count":11},"mongodb-schema-modeling","Mongodb Schema Modeling",{"key":43,"name":44,"count":11},"mongodb-transactions-consistency","Mongodb Transactions Consistency",{"key":46,"name":47,"count":11},"mysql-indexes","Mysql Indexes",{"key":49,"name":50,"count":11},"mysql-innodb-transactions","Mysql Innodb Transactions",{"key":52,"name":53,"count":11},"mysql-operations","Mysql Operations",{"key":8,"name":9,"count":11},{"key":56,"name":57,"count":11},"mysql-replication-scaling","Mysql Replication Scaling",{"key":59,"name":60,"count":11},"mysql-types-constraints","Mysql Types Constraints",{"key":62,"name":63,"count":11},"nosql-models","Nosql Models",{"key":65,"name":66,"count":11},"performance-tuning","Performance Tuning",{"key":68,"name":69,"count":11},"pg-indexes","Pg Indexes",{"key":71,"name":72,"count":11},"pg-mvcc-vacuum","Pg Mvcc Vacuum",{"key":74,"name":75,"count":11},"pg-operations","Pg Operations",{"key":77,"name":78,"count":11},"pg-query-planning","Pg Query Planning",{"key":80,"name":81,"count":11},"pg-transactions-locking","Pg Transactions Locking",{"key":83,"name":84,"count":11},"pg-types-constraints","Pg Types Constraints",{"key":86,"name":87,"count":11},"query-optimization","Query Optimization",{"key":89,"name":90,"count":11},"redis-cluster-sharding","Redis Cluster Sharding",{"key":92,"name":93,"count":11},"redis-data-structures","Redis Data Structures",{"key":95,"name":96,"count":11},"redis-expiration-eviction","Redis Expiration Eviction",{"key":98,"name":99,"count":11},"redis-persistence","Redis Persistence",{"key":101,"name":102,"count":11},"redis-replication-sentinel","Redis Replication Sentinel",{"key":104,"name":105,"count":11},"redis-transactions-scripting","Redis Transactions Scripting",{"key":107,"name":108,"count":11},"replication-scaling","Replication Scaling",{"key":110,"name":111,"count":11},"security-access","Security Access",{"key":113,"name":114,"count":11},"transactions-isolation","Transactions Isolation",[116,120,123,126],{"key":117,"name":118,"count":119},"mongodb","MongoDB",450,{"key":121,"name":122,"count":119},"mysql","MySQL",{"key":124,"name":125,"count":119},"postgresql","PostgreSQL",{"key":127,"name":128,"count":119},"redis","Redis",[130,148,161,174,188,201],{"id":131,"topic":9,"difficulty":132,"body":133,"options":134,"correct_key":136,"explanation":147},"019f8780-5f19-7731-a87f-d19df4193c00",1,"What does the `EXPLAIN` statement do when placed in front of a `SELECT` query in MySQL?",[135,138,141,144],{"key":136,"text":137},"a","It shows the optimizer's plan for the query, without running it",{"key":139,"text":140},"b","It runs the query and returns both the result rows and a plan summary, timestamped for later comparison",{"key":142,"text":143},"c","It rewrites the query into an equivalent but faster form and executes that instead",{"key":145,"text":146},"d","It disables the query cache for that single statement only, leaving the setting unchanged for every other statement","`EXPLAIN` asks the optimizer to produce the execution plan (access type, index used, estimated rows, etc.) it *would* use for the query, without executing it and returning data rows. It doesn't rewrite-and-run the query (c) or touch the query cache (d, which doesn't exist since MySQL 8.0 anyway) — it returns plan rows and (b) is wrong because plain `EXPLAIN` never returns the query's own result set.",{"id":149,"topic":9,"difficulty":132,"body":150,"options":151,"correct_key":139,"explanation":160},"019f8780-5f1a-7d39-b9f1-2b4d61a734e2","A colleague claims running plain `EXPLAIN SELECT * FROM orders WHERE customer_id = 5;` will actually scan the `orders` table and return timing information. Is this correct?",[152,154,156,158],{"key":136,"text":153},"Yes, `EXPLAIN` always executes the query and measures real timing",{"key":139,"text":155},"No, plain `EXPLAIN` only estimates the plan; real timing needs `EXPLAIN ANALYZE`",{"key":142,"text":157},"Yes, but only for queries that use an index and skip a full table scan",{"key":145,"text":159},"No, `EXPLAIN` never works on `SELECT` statements, only on `UPDATE`\u002F`DELETE`","Plain `EXPLAIN` never executes the statement — it only reports the optimizer's estimated plan (estimated rows, access type). To actually run the query and see real timing\u002Frow counts per node, you need `EXPLAIN ANALYZE` (available since MySQL 8.0.18). (a) and (c) wrongly claim plain `EXPLAIN` executes anything, and (d) is false — `EXPLAIN` works on `SELECT`, `INSERT`, `UPDATE`, `DELETE`, and more.",{"id":162,"topic":9,"difficulty":132,"body":163,"options":164,"correct_key":142,"explanation":173},"019f8780-5f1c-72aa-aa83-ff80dd8457e3","Since MySQL 8.0.18, what is the key difference `EXPLAIN ANALYZE` adds compared to plain `EXPLAIN`?",[165,167,169,171],{"key":136,"text":166},"It only works on `INSERT`\u002F`UPDATE`\u002F`DELETE`, never on `SELECT`",{"key":139,"text":168},"It shows the query text formatted more readably, but uses the same estimated numbers as `EXPLAIN`",{"key":142,"text":170},"It actually executes the query and reports real per-node timing and row counts alongside the plan",{"key":145,"text":172},"It replaces `EXPLAIN` entirely and `EXPLAIN` alone is deprecated","`EXPLAIN ANALYZE` (MySQL 8.0.18+) actually runs the statement and augments each plan node with real measured values — actual time and actual rows — in addition to the estimates, then discards the result set (it prints the plan\u002Ftimings as text, not the rows). It works on `SELECT` (c is right, a is wrong), the numbers shown are real not just formatted estimates (b is wrong), and plain `EXPLAIN` is still fully supported, not deprecated (d is wrong).",{"id":175,"topic":9,"difficulty":176,"body":177,"options":178,"correct_key":145,"explanation":187},"019f8780-5f1d-78b2-bd98-590101d03c17",2,"In `EXPLAIN` output, the `type` column for a query reads `ALL`. What does this indicate about how MySQL accesses the table?",[179,181,183,185],{"key":136,"text":180},"MySQL used every available index simultaneously to satisfy the query",{"key":139,"text":182},"MySQL used a covering index, so it never touched the table's data pages",{"key":142,"text":184},"MySQL matched exactly one row using a unique key, the fastest possible access type",{"key":145,"text":186},"MySQL performed a full table scan, reading every row","`type: ALL` is the least efficient access type shown in `EXPLAIN` — it means a full table scan, reading every row sequentially with no index narrowing the search. It's the opposite of an efficient lookup like `const` (exactly one row via a unique\u002Fprimary key, c) or `eq_ref`\u002F`ref`\u002F`range`, and unrelated to using multiple indexes at once (a) or a covering index (b, which would show `Using index` in `Extra` with a non-`ALL` type).",{"id":189,"topic":9,"difficulty":132,"body":190,"options":191,"correct_key":136,"explanation":200},"019f8780-5f1e-7b15-8563-742470f2aff7","In `EXPLAIN` output, which column tells you which index MySQL actually decided to use for that table access, as opposed to indexes that were merely considered?",[192,194,196,198],{"key":136,"text":193},"`key`",{"key":139,"text":195},"`possible_keys`",{"key":142,"text":197},"`type`",{"key":145,"text":199},"`ref`","The `key` column shows the index MySQL actually chose to use (or `NULL` if none). `possible_keys` (b) only lists candidate indexes the optimizer considered, which may not match what was actually used. `type` (c) describes the access method (e.g. `ref`, `range`, `ALL`), not the index name, and `ref` (d) shows which column\u002Fconstant was compared against the chosen key, not the key's identity.",{"id":202,"topic":9,"difficulty":176,"body":203,"options":204,"correct_key":139,"explanation":213},"019f8780-5f1f-7973-a2db-22935a8ae1f0","What does the `key_len` column in `EXPLAIN` output tell you?",[205,207,209,211],{"key":136,"text":206},"The total number of rows stored in the index being used, regardless of the query's `WHERE` clause",{"key":139,"text":208},"The bytes of the chosen index MySQL actually uses to look up rows",{"key":142,"text":210},"The maximum number of characters allowed in the indexed column's definition",{"key":145,"text":212},"The number of distinct index files scanned for the query, one per table involved","`key_len` reports how many bytes of the chosen key are actually used for the lookup — useful for confirming whether a composite index is being used fully or only by its leading column(s). It's not a row count (a), not a column length limit (c, though it's derived from column widths it's about usage not schema limit), and it does not count index files (d). MySQL can combine multiple indexes for one table through the `index_merge` access method, but `key_len` still describes the key parts used for the reported access.",{"fields":215,"seniorities":391,"interview_shapes":392,"locales":397,"oauth":399,"question_count":402,"coach_enabled":403,"jd_match_enabled":403},[216,241,261,278,302,315,324,343,365,372,378,385],{"key":217,"name_tr":218,"name_en":218,"sort":132,"specializations":219},"backend","Backend",[220,223,226,229,232,235,238],{"key":221,"name":222,"field":217},"general","Genel",{"key":224,"name":225,"field":217},"go","Go",{"key":227,"name":228,"field":217},"python","Python",{"key":230,"name":231,"field":217},"java","Java",{"key":233,"name":234,"field":217},"csharp","C#\u002F.NET",{"key":236,"name":237,"field":217},"nodejs","Node.js",{"key":239,"name":240,"field":217},"php","PHP",{"key":242,"name_tr":243,"name_en":243,"sort":176,"specializations":244},"frontend","Frontend",[245,246,249,252,255,258],{"key":221,"name":222,"field":242},{"key":247,"name":248,"field":242},"javascript","JavaScript",{"key":250,"name":251,"field":242},"typescript","TypeScript",{"key":253,"name":254,"field":242},"react","React",{"key":256,"name":257,"field":242},"vue","Vue",{"key":259,"name":260,"field":242},"angular","Angular",{"key":262,"name_tr":263,"name_en":263,"sort":264,"specializations":265},"fullstack","Fullstack",3,[266,267,268,269,270,271,272,273,274,275,276,277],{"key":221,"name":222,"field":262},{"key":224,"name":225,"field":217},{"key":227,"name":228,"field":217},{"key":230,"name":231,"field":217},{"key":233,"name":234,"field":217},{"key":236,"name":237,"field":217},{"key":239,"name":240,"field":217},{"key":247,"name":248,"field":242},{"key":250,"name":251,"field":242},{"key":253,"name":254,"field":242},{"key":256,"name":257,"field":242},{"key":259,"name":260,"field":242},{"key":279,"name_tr":280,"name_en":280,"sort":281,"specializations":282},"devops-cloud","DevOps \u002F Cloud",4,[283,284,287,290,293,296,299],{"key":221,"name":222,"field":279},{"key":285,"name":286,"field":279},"aws","AWS",{"key":288,"name":289,"field":279},"gcp","GCP",{"key":291,"name":292,"field":279},"azure","Azure",{"key":294,"name":295,"field":279},"kubernetes","Kubernetes",{"key":297,"name":298,"field":279},"terraform","Terraform",{"key":300,"name":301,"field":279},"linux","Linux",{"key":303,"name_tr":304,"name_en":304,"sort":305,"specializations":306},"ai-engineer","AI Engineer",5,[307,308,309,312],{"key":221,"name":222,"field":303},{"key":227,"name":228,"field":303},{"key":310,"name":311,"field":303},"llm-rag","LLM\u002FRAG",{"key":313,"name":314,"field":303},"mlops","MLOps",{"key":5,"name_tr":316,"name_en":6,"sort":317,"specializations":318},"Veritabanı",6,[319,320,321,322,323],{"key":221,"name":222,"field":5},{"key":124,"name":125,"field":5},{"key":121,"name":122,"field":5},{"key":117,"name":118,"field":5},{"key":127,"name":128,"field":5},{"key":325,"name_tr":326,"name_en":327,"sort":328,"specializations":329},"mobile","Mobil","Mobile",7,[330,331,334,337,340],{"key":221,"name":222,"field":325},{"key":332,"name":333,"field":325},"ios-swift","iOS (Swift)",{"key":335,"name":336,"field":325},"android-kotlin","Android (Kotlin)",{"key":338,"name":339,"field":325},"flutter","Flutter",{"key":341,"name":342,"field":325},"react-native","React Native",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"security","Güvenlik","Security",8,[349,350,353,356,359,362],{"key":221,"name":222,"field":344},{"key":351,"name":352,"field":344},"appsec","AppSec",{"key":354,"name":355,"field":344},"offensive-pentest","Offensive \u002F Pentest",{"key":357,"name":358,"field":344},"cloud-security","Cloud Security",{"key":360,"name":361,"field":344},"devsecops","DevSecOps",{"key":363,"name":364,"field":344},"blue-team-incident","Blue Team \u002F Incident",{"key":366,"name_tr":367,"name_en":368,"sort":369,"specializations":370},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[371],{"key":221,"name":222,"field":366},{"key":373,"name_tr":374,"name_en":374,"sort":375,"specializations":376},"data-engineer","Data Engineer",10,[377],{"key":221,"name":222,"field":373},{"key":379,"name_tr":380,"name_en":381,"sort":382,"specializations":383},"game-dev","Oyun Geliştirme","Game Development",11,[384],{"key":221,"name":222,"field":379},{"key":386,"name_tr":387,"name_en":387,"sort":388,"specializations":389},"ml-engineer","ML Engineer",12,[390],{"key":221,"name":222,"field":386},[14,15,16],{"junior":393,"mid":395,"senior":396},{"questions":394,"median_sec":3},20,{"questions":394,"median_sec":3},{"questions":394,"median_sec":3},[398,10],"tr",[400,401],"google","github",21750,true]