Free — no signup required

S3 Select vs. Athena: Querying Data in Place

2 min read

The Problem: Downloading to Search

Imagine you have a 10 GB CSV file of transaction logs in S3, and you need to find all transactions from a single customer. The naive approach: download the entire 10 GB file to an EC2 instance, load it into memory, filter it, and discard 99.9% of the data. You paid for 10 GB of data transfer and waited for a large download — to get a few kilobytes of results.

S3 provides two mechanisms to avoid this: S3 Select for single-file queries and Amazon Athena for multi-file analytics.

S3 Select

S3 Select pushes a SQL WHERE clause down into S3's storage layer. S3 scans the file internally and returns only the rows that match your filter. The filtered result — not the full file — travels over the network to your application.

  • Supported formats: CSV, JSON, Parquet (with or without GZIP/BZIP2 compression).
  • Scope: One object at a time.
  • Performance improvement: AWS reports up to 400% performance improvement and significant cost reduction for typical filtering workloads.
  • Limitation: S3 Select supports only simple filtering (SELECT, WHERE, LIMIT). No JOIN, no aggregation across multiple files.

Example use case: A Lambda function that processes a specific log file and needs only the ERROR level entries. Instead of downloading the whole file, it uses S3 Select to retrieve only the error rows.

Amazon Athena

Athena is a fully serverless, interactive query service that runs SQL against data stored in S3. You define a schema (using AWS Glue Data Catalog or inline DDL), point Athena at a prefix in S3, and run standard SQL — including JOIN, GROUP BY, HAVING, and window functions.

  • Scope: Entire buckets, prefixes, or partitioned datasets containing thousands of files.
  • Pricing: You pay per TB of data scanned. Using columnar formats like Parquet and partitioning your data by date/region can reduce costs by 70-90%.
  • Use case: Ad-hoc analytics on a data lake, querying CloudTrail logs, analyzing ALB access logs.

Decision Rule

Scenario Tool
Filter rows from a single large file S3 Select
Run SQL across an entire folder of files Athena
Need JOIN or aggregation Athena only
Triggered from Lambda with minimal overhead S3 Select

This is one of 18 chapters

Get every chapter — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

See pricing