小编Hit*_*ony的帖子

用于优化的MySQL哈希索引

也许这可能是菜鸟,但我正在搞几张桌子.

我有表A约45,000条记录

我有表B大约150万条记录

我有一个问题:

update
    schema1.tablea a
    inner join (
        SELECT DISTINCT
            ID, Lookup,
            IDpart1, IDpart2
        FROM
            schema1.tableb
        WHERE
            IDpart1 is not NULL
        AND
            Lookup is not NULL
        ORDER BY
            ID,Lookup
    ) b Using(ID,Lookup)
set 
    a.Elg_IDpart1 = b.IDpart1, 
    a.Elg_IDpart2 = b.IDpart2
where
    a.ID is NOT NULL
AND
    a.Elg_IDpart1 is NULL
Run Code Online (Sandbox Code Playgroud)

所以我在ID,Lookup上强制索引.每个表都有这些列的索引,但由于子查询我强制它.

它正在运行,它真的应该采取,我想在5分钟之内......

我的问题是关于索引,而不是查询.

我知道你不能在有序索引中使用哈希索引.

我目前在ID,Lookup上都有索引,并且作为一个索引,它是一个B-Tree索引.基于我的WHEREClause,哈希索引是否适合作为优化技术?

我可以有一个哈希索引,其余的索引是B树索引吗?

这不是主要关键字段.

我会发布我的解释,但我更改了这些表上的名称.基本上它只是为ID使用索引...而不是使用ID,Lookup,我想强制它使用它们,或者至少把它变成另一种索引,看看是否有帮助?

现在我知道MySQL足够聪明,可以确定哪个索引最合适,那么它正在做什么?Lookup字段映射ID的第一部分和第二部分......

对此有任何帮助或见解表示赞赏.


 UPDATE

一个EXPLAINUPDATE我拿出子查询后.

+----+-------------+-------+------+-----------------------------+--------------+---------+-------------------+-------+-------------+
| id | select_type | table | type |        possible_keys        | …

mysql indexing hash b-tree

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

b-tree ×1

hash ×1

indexing ×1

mysql ×1