gpt4 book ai didi

mysql - 为什么我的 UPDATE 查询在 2200 万行中速度很慢

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

我正在开发自己的广告系统,每个显示的横幅都会在数据库中插入一条记录(用于统计)。值之一是广告是否正在展示。然后,当您离开页面时,它会更新该行并将值设置为 0。在包含 400 万条数据的旧表上,大约需要 0.1 秒。

由于某种原因,查询计时器超过 1 秒

数据库结构:

CREATE TABLE `ad_views` (
`id` int(11) NOT NULL,
`datetime` datetime NOT NULL,
`visitor_id` varchar(30) NOT NULL,
`campagne_id` int(5) NOT NULL,
`banner_id` int(5) NOT NULL,
`position_id` int(5) NOT NULL,
`device` varchar(1) NOT NULL,
`seen` tinyint(1) NOT NULL,
`on_page` tinyint(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `ad_views`
ADD PRIMARY KEY (`id`),
ADD KEY `visitor_id` (`visitor_id`);

需要这么长时间的 SQL:

UPDATE `ad_views` SET on_page = 0 WHERE visitor_id = 102577047

我已在访问者 ID 上添加了索引

版本信息

MySQL version 5.5.31
PHP version 7.2
phpMyAdmin 4.9.1

MySQL 服务器版本可能会成为问题,因为它已经过时(我无法升级 atm),但可能不会对查询时间有太大改善?

编辑: EXPLAIN SELECT

最佳答案

  1. 您需要 visitor_id 的索引
  2. 您需要使用正确的类型以便使用索引

所以:

create index idx_ad_views_visitor_id on ad_views(visitor_id);

索引中可以有其他列,但 visitor_id 必须是第一列。

然后:

UPDATE `ad_views`
SET on_page = 0
WHERE visitor_id = '102577047';

关于mysql - 为什么我的 UPDATE 查询在 2200 万行中速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58451401/

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