gpt4 book ai didi

mysql - 具有数百万行的数据库的有效索引

转载 作者:行者123 更新时间:2023-11-29 04:52:03 25 4
gpt4 key购买 nike

我有一个 MYISAM MySQL DB 表,其中包含数百万行,我被要求使用该表,但我需要首先加快查询速度。

之前根本没有索引!我在“类型”列上添加了一个新索引,这很有帮助,但我想知道是否还有任何其他列也可能是最好的索引?

这是我的创建表:

CREATE TABLE `clicks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`companyid` int(11) DEFAULT '0',
`type` varchar(32) NOT NULL DEFAULT '',
`contextid` int(11) NOT NULL DEFAULT '0',
`period` varchar(16) NOT NULL DEFAULT '',
`timestamp` int(11) NOT NULL DEFAULT '0',
`location` varchar(32) NOT NULL DEFAULT '',
`ip` varchar(32) DEFAULT NULL,
`useragent` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `companyid` (`companyid`,`type`,`period`),
KEY `type` (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

典型的 SELECT 语句通常会按 companyidtypecontextid 列进行过滤。

例如:

SELECT period, count(period) as count FROM clicks WHERE contextid in (123) AND timestamp > 123123123 GROUP BY period ORDER BY timestamp ASC

SELECT period, count(period) as count FROM clicks WHERE contextid in (123) AND type IN('direct') AND timestamp > 123123123 GROUP BY period ORDER BY timestamp ASC

我的问题的最后一部分是这样的:当我在 type 上添加索引时,它花了大约 1 小时 - 如果我要添加或删除多个索引,您可以在一个查询中完成还是您是否必须一个接一个地完成并等待每个完成?

谢谢你的想法。

最佳答案

索引确实很强大,但并不像您想象的那么黑。了解 MySQL 的 EXPLAIN PLAN 功能,这将帮助您系统地找到可以改进的地方:

http://dev.mysql.com/doc/refman/5.5/en/execution-plan-information.html

关于mysql - 具有数百万行的数据库的有效索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10705815/

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