Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
ExperiencesCoaching
New
Practice
Mock InterviewsTimed interview simulations with feedbackSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Get started
Indexes and Performance Tradeoffs
00:00
5 left

Indexes and Performance Tradeoffs

MediumSQL · PostgreSQL

Problem

What are indexes, and how do they impact write performance versus read performance in a database used for clinical data at Medpace?

For the hands-on portion, use the supplied index statistics to classify indexes according to their observed read activity and write-maintenance operations.

Output

  1. One row per index on clinical_records
  2. Return index_name, read_hit_ratio, maintenance_operations, and performance_assessment
  3. Sort by performance_assessment priority, then index_name alphabetically

Output details

  • Calculate read_hit_ratio as idx_tup_fetch / idx_tup_read, rounded to two decimal places, and use 0 when idx_tup_read is zero.
  • Calculate maintenance_operations as inserts + updates + deletes.
  • Classify zero scans with positive maintenance as unused_write_cost, scans at least 1000 with maintenance at most 1000 as read_favorable, and scans at least 100 with maintenance above 1000 as mixed_tradeoff; classify all others as low_activity.
  • Order assessment priorities as unused_write_cost, read_favorable, mixed_tradeoff, then low_activity, with index_name ascending within each priority.

Schema

index_usage_stats
ColumnTypeDescription
index_namePKVARCHAR(100)Name of the database index
table_nameVARCHAR(100)Table associated with the index
idx_scanBIGINTNumber of index scans
idx_tup_readBIGINTIndex entries returned by scans
idx_tup_fetchBIGINTTable rows fetched through the index
insertsBIGINTRows inserted during the observation period
updatesBIGINTRows updated during the observation period
deletesBIGINTRows deleted during the observation period
Tablesindex_usage_stats
Interviewer

Your question is Indexes and Performance Tradeoffs. Start with the requirements and the one table in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePostgreSQL
Sign up free to run your codeLog inLn 1
Run your query to see results here.