gpt4 book ai didi

MySQL索引优化

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

我有下表 - '元素'

CREATE TABLE `element` (
`eid` bigint(22) NOT NULL AUTO_INCREMENT,
`tag_name` varchar(45) COLLATE utf8_bin DEFAULT NULL,
`text` text COLLATE utf8_bin,
`depth` tinyint(2) DEFAULT NULL,
`classes` tinytext COLLATE utf8_bin,
`webarchiver_uniqueid` int(11) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`updated` datetime DEFAULT NULL,
`rowstatus` char(1) COLLATE utf8_bin DEFAULT 'A',
PRIMARY KEY (`eid`)
) ENGINE=InnoDB AUTO_INCREMENT=12090 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

上面给出了列详细信息和当前索引详细信息。该表上几乎 90% 的查询都是这样的:

select * from element 
where tag_name = 'XXX'
and text = 'YYYY'
and depth = 20
and classes = 'ZZZZZ'
and rowstatus = 'A'

在此表上创建索引的最佳方法是什么?该表大约有 60k 行。

最佳答案

classesTINYTEXT更改为VARCHAR(255)(或一些更合理的大小),然后有

INDEX(tag_name, depth, classes)

各列的顺序任意。我省略了 rowstatus,因为它听起来像是一列可能会发生变化的列。 (无论如何,标志不会给索引添加太多内容。)

索引中不能包含 TEXTBLOB 列。而且做“前缀”索引是不值得的。

由于PRIMARY KEYUNIQUE键,DROP INDEX eid_UNIQUE

为所有字符字段选择“binary”/“utf8_bin”是否有某种原因?

关于MySQL索引优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323792/

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