gpt4 book ai didi

mysql - 1000 万行的简单类型查询需要 3.50 秒

转载 作者:行者123 更新时间:2023-11-29 01:26:46 26 4
gpt4 key购买 nike

我是数据库查询优化的新手。这是创建表查询:

CREATE TABLE mo (
id int UNSIGNED NOT NULL auto_increment,
msisdn varchar(20) NOT NULL,
operatorid int UNSIGNED NOT NULL,
shortcodeid int UNSIGNED NOT NULL,
text varchar(100) NOT NULL,
auth_token varchar(60) NOT NULL,
created_at DATETIME,
PRIMARY KEY(id)
);

我的查询是这样的:

SELECT count(id) as mo_count from mo where created_at > DATE_SUB(NOW(), INTERVAL 15 MINUTE)

当我测试它时,结果是

Time taken for tests:   3.50 seconds

[0] => Array
(
[id] => 1
[select_type] => SIMPLE
[table] => mo
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 10000255
[Extra] => Using where
)

请教我如何优化这个查询。非常感谢。

最佳答案

您需要在用于该查询的列上添加一个INDEX,否则数据库将不得不检查您表中的所有行以查看哪些适合您的WHERE 子句。

ALTER TABLE mo ADD INDEX (created_at);

索引 使 MySQL 能够根据您在该列中的数据仅扫描表的一部分。

您可以阅读更多关于 how mysql uses indexes 的信息.

关于查询本身——如果不改变你的表的结构,你就不能真正优化它(除非你知道哪些 ids 适合 WHERE 并且你可以改变查询使用 id> X,因为表中的 id 列已编入索引,但我想事实并非如此。

关于mysql - 1000 万行的简单类型查询需要 3.50 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41416310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com