5个真正有效的数据库查询优化技巧
发布: (2025年12月11日 GMT+8 09:55)
2 min read
原文: Dev.to
Source: Dev.to
在多年管理数据库驱动的应用后,我发现查询优化可以决定你的应用性能是好是坏。下面是我经常使用的五个实用技巧。
1. 为外键建立索引
每个外键都应该有索引:
CREATE INDEX idx_user_id ON orders(user_id);
如果没有适当的索引,随着表的增大,JOIN 操作会变得非常慢。
2. 使用 EXPLAIN 了解执行情况
对查询运行 EXPLAIN,查看 MySQL 是如何执行的:
EXPLAIN SELECT * FROM products WHERE category_id = 5;
关注以下内容:
- 表扫描(不佳)
- 索引使用(良好)
- 检查的行数 vs. 返回的行数
3. 只选择需要的列
获取不必要的列会浪费内存和带宽。
// Bad
$query = "SELECT * FROM users";
// Good
$query = "SELECT id, name, email FROM users";
4. 重用连接并批量插入
打开数据库连接代价高;使用持久连接来重用它们:
// Use persistent connections in PHP
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_PERSISTENT => true
]);
将多条插入合并为批量操作,而不是逐行插入:
// Instead of this
foreach ($items as $item) {
$db->insert($item);
}
// Do this
$db->insertBatch($items);
这可以让批量操作提速 10–100 倍。
5. 启用 MySQL 的慢查询日志
捕获超过阈值的查询,以便后续分析:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
任何执行时间超过 2 秒的查询都会被记录。
数据库优化是一个持续的过程。从这些基础开始,测量结果并不断迭代。用户会因为更快的响应时间而感激你的努力!