【问题标题】:.Net Mysql Entity Framework - create mysql hash index.Net Mysql Entity Framework - 创建mysql哈希索引
【发布时间】:2020-08-23 00:44:49
【问题描述】:

如何使用Entity Framework(核心)创建Mysql哈希索引?

在 DbContext 中有索引:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ContactEndpoint>().HasIndex(ce => ce.Endpoint);
}

将使用以下命令创建迁移:

migrationBuilder.CreateIndex(
                name: "IX_ContactEndpoints_Endpoint",
                table: "ContactEndpoints",
                column: "Endpoint");

但是如何指定索引类型呢?哈希/B树?

谢谢。

【问题讨论】:

    标签: mysql indexing entity-framework-core


    【解决方案1】:

    MySQL 没有“散列”索引。 (好吧,有一个案例,但你可能没有打到。)

    关键字HASH默默变成BTree

    对于“点查询”,BTree 索引与 Hash(如果存在)差不多快。哈希对于“范围查询”是无用的。所以 MySQL 的设计者决定不实现 Hash。

    所以忘记“哈希索引”吧。欢迎跳出教科书进入现实世界。

    【讨论】:

    • 你是对的,除了一件事:它并不总是默默地变成 BTree。例如看这里stackoverflow.com/questions/50525020/… 或这里stackoverflow.com/questions/50102420/…。人们为此编写自己的解决方案。欢迎离开现实世界进入越野车世界
    • @Jahjajaka - 是的。这个站点上的很多问题都与构建不完全正确的 SQL 的 3rd 方软件有关。这些链接可能比我的答案更能帮助其他人。
    猜你喜欢
    • 1970-01-01
    • 2012-08-22
    • 2017-12-03
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 2017-06-15
    相关资源
    最近更新 更多