我遇到了一些问题,我的数据库大小是 48.0 MB,它有
ids
列,其中包含用户的 id 。
我的命令:
SELECT ids FROM users WHERE ids = $from_id AND bot_id = $botid
bot_id :它指的是我从哪里获得这个id。
问题:需要
1.68 sec
才能给我结果,这需要很多时间。
我正在寻找快速获得此结果的方法。
更多信息:
我使用PHP8.2 PDO SQL通过此命令获取查询结果:
$PDO->query("从
users
中选择 ids,其中 ids = $from_id AND bot_id = $botid");
用户表的主键是 (
id
)
您可以从一些基础知识开始:
添加索引:通过在
ids
和 bot_id
上添加索引来加快查询速度。
ALTER TABLE users ADD INDEX idx_ids_botid (ids, bot_id);
使用准备好的语句:您的代码对 SQL 注入开放。使用 PDO 准备好的语句来保护它:
$stmt = $PDO->prepare("SELECT ids FROM users WHERE ids = :from_id AND bot_id = :botid");
$stmt->bindParam(':from_id', $from_id, PDO::PARAM_INT);
$stmt->bindParam(':botid', $botid, PDO::PARAM_INT);
$stmt->execute();
服务器优化:检查您的 MySQL 服务器设置。如果需要,调整缓冲区大小。
硬件:如果可能,请使用 SSD 而不是 HDD,以实现更快的访问速度。
分析查询:在查询之前使用
EXPLAIN
查看其处理方式。
缓存:对于频繁查询,可以考虑使用Redis等缓存工具。
维护数据库:偶尔运行
OPTIMIZE TABLE
来维护您的数据库。