Performance Tuning in DuckDB
Learn how to optimize your DuckDB queries and improve performance.
Query Optimization
Use Appropriate Data Types
-- Instead of
CREATE TABLE users (
id VARCHAR(255),
age VARCHAR(10)
);
-- Use
CREATE TABLE users (
id INTEGER,
age INTEGER
);
Indexing Strategies
-- Create indexes on frequently queried columns
CREATE INDEX idx_users_age ON users(age);
Partitioning
-- Partition tables by date for better query performance
CREATE TABLE sales (
date DATE,
amount DECIMAL(10,2),
product_id INTEGER
) PARTITION BY date;
Best Practices
- Use Prepared Statements
con.execute("SELECT * FROM users WHERE age > ?", [18]) - Batch Inserts
con.execute("INSERT INTO users VALUES (?, ?)", [(1, 25), (2, 30)]) - Materialize Common Queries
CREATE MATERIALIZED VIEW active_users AS SELECT * FROM users WHERE status = 'active';
Monitoring Performance
- Use
EXPLAINto analyze query plans - Monitor memory usage
- Track query execution times