在MySQL中优化表的索引
P粉841870942
P粉841870942 2023-07-25 09:47:08
0
1
580
<p>我有以下表(tracking searches):</p> <pre class="brush:sql;toolbar:false;">CREATE TABLE `searches` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `deleted` tinyint(1) unsigned NOT NULL, `query` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `userId` int(10) unsigned NOT NULL, `connectionId` int(10) unsigned NOT NULL, `pluginId` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `key,deleted` (`publicId`,`deleted`), KEY `deleted,userId` (`deleted`,`userId`), KEY `deleted,connectionId,pluginId` (`deleted`,`connectionId`,`pluginId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; </pre> <p>有时候,我运行查询来返回特定用户执行的所有查询。在这种情况下,我有一个索引,包含以下列:deleted, userId。<code></code></p> <p>其他时候,我运行查询来返回特定“连接”和“插件”执行的所有查询。在这种情况下,我有一个索引,包含以下列:deleted, connectionId, pluginId。<code></code></p> <p>索引的大小正在显著增长,因此我正在尝试了解如何更好地优化它们。</p> <p>将这两个索引合并为一个索引是否有价值?例如,它可以包含以下列: <code>deleted</code>,<code>userId</code>,<code>connectionId</code>,<code>pluginId</code></p> <p>我不确定这样做是否会在满足查询需求的同时减小索引的大小。</p>
P粉841870942
P粉841870942

全部回复(1)
P粉269847997

您可以多次使用一个索引,但只能从左到右使用,不能跳过任何字段。例如:索引(字段A,字段B,字段C),那么您可以使用该索引进行字段A的查询,或者字段A和字段B的查询,或者字段A、字段B和字段C的查询,但不能用于字段A和字段C或字段B和字段C的访问。

因此,这对于您的查询是不适用的。


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板