外键和索引

2024-05-17

我有 2 张桌子:products and 类别。每个类别有很多产品,一个产品可以属于多个类别。

products

product_id - int primary auto increment
name - unique
etc.

类别

category_id - int primary auto increment
name - unique
etc.

我有第三个表用于许多Tomany 关系。

产品类别

product_id -> foreign key: products.product_id
category_id -> foreign key: category.category_id

我的问题是:我应该为product_id and category_id in 产品类别为了更快的选择查询,如果是,什么索引?

Thanks


这取决于哪些查询最频繁。

您最终可能会得到三个索引。

  1. 如果你有... WHERE products_categories.product_id = XXX,创建索引product_id.

  2. 同样适用于category_id

  3. 在两者上创建索引category_id and product_id如果你有... WHERE products_categories.category_id = XXX AND products_categories.product_id = YYY

然而,遵循MySQL手册 http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html,请记住,索引(category_id, product_id)索引可能是多余的(category_id)。另外,还有一个索引(product_id, category_id)索引可能是多余的(product_id)。因此,您最终可能会得到两个索引(而不是三个)来满足您所有频繁的查询需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

外键和索引 的相关文章

随机推荐

  • 使用indexOf()函数时我应该重写哪个函数

    在java中使用indexOf 函数时我应该重写哪个函数 我有一个数组列表 然后我接受一个输入作为 ID 并创建一个包含该 ID 的对象 所有其他元素均为空 然后我需要传递该对象并获取包含该对象的元素的索引 The equals 方法 ht
  • 导出选定的行,其中按钮集合在数据表中不起作用

    我正在尝试仅从数据表中导出选定的行 通过将扩展选项设置为 csv 我可以成功将选定的行导出到 csv 文件 如下面的代码所示 buttons colvis selectAll selectNone extend csv text Expor
  • OWIN 可以替代 ASP.NET MVC 应用程序中的 DI 吗?

    大约一年前 在 Visual Studio 中创建时自动生成的 MVC 项目不包含任何有关 OWIN 的内容 作为再次申请并试图了解这些变化的人 我想知道 OWIN 是否可以替代我的 DI 据我了解 Startup Auth cs 中的以下
  • Glew+GLFW Win32 无依赖项 Visual Studio

    是否可以在不将文件复制到 C 的情况下构建并链接 Glew 和 GLFW 我找不到任何说明如何在不将 DLL 复制到 C 上的 Visual Studio 目录的情况下使用这些库的文档 我只想包含项目目录中所需的所有 dll 和 lib 文
  • 将数据追加到Python字典中

    我使用以下代码从键列表中初始化字典 z df1 2 value counts keys tolist mydict dict fromkeys z None 此外 我用过 value df2 2 value counts keys toli
  • 如何使用 asyncio/aiohttp 确定最佳缓冲区大小

    在 python 中使用 asyncio 时 我们如何确定 read 的最佳参数 12字节 100 字节 async with self session get url headers headers as response chunk s
  • 如何使 StringGrid 的列适合网格的宽度?

    我已经寻找解决方案很长时间了 但没有任何运气 有谁知道一个简单的方法来做到这一点 例如 我想拉伸网格的第二列以适应网格的宽度 Use the ColWidths财产 像这样 with StringGrid1 do ColWidths 1 C
  • 具有动态警报正文的快速本地通知

    所以我可以创建一个像这样的本地通知 var localNotification UILocalNotification localNotification fireDate NSDate timeIntervalSinceNow 7 loc
  • 为什么 std::string 分配两次?

    我写了一个自定义分配器std string and std vector如下 include
  • 在GDB中的每一行设置断点

    有没有办法用GDB在代码的每一行设置断点 明明我不想打b addr对于每一行 所以我想知道是否有一种快速的方法来做到这一点 Edit请注意 我正在运行由其他人创建的二进制文件 并且我无权访问源代码 不幸的是 该二进制文件尚未使用 g 标志进
  • 覆盖供应商自动加载编辑器

    有没有办法让您创建的自动加载文件在调用供应商自动加载之前运行 我们似乎遇到了 SimpleSAML 的自动加载覆盖我们创建的自动加载文件之一的问题 我是 Composer 的新手 似乎无法在网上找到任何解决方案 我尝试将我们的自动加载文件包
  • Django 中从 sqlite 迁移到 postgresql

    我想迁移自sqlite to PostgreSQL db 我安装了 postgresql 并在其 shell 上创建数据库 然后配置我的 django 设置如下 default ENGINE django db backends postg
  • 在 Chrome 中使用 React 添加新的 DOM 项目不会保持预期的滚动位置

    在 React 中向状态数组添加新项目时 我遇到了一个意外的问题 这会导致更多项目被添加到 DOM 中 在 Safari 和 Firefox 中 这会导致新的 DOM 项目添加到折叠下方 我必须向下滚动才能看到新项目 在 Chrome 中
  • Air for Android:动画导致我的游戏出现滞后

    我正在为 android 平台制作一款 cs6 air 游戏 当我为游戏制作动画时 我使用 3D 软件搅拌器 在 Blender 中 我制作了一个动画 然后将其渲染为一系列 PNG 图像 并将其导入到 Flash CS6 中 因此 如果我要
  • 如何创建不返回任何内容的函数

    我想写一个函数pl pgsql 我在用着Postgres 企业管理器 v3并使用 shell 来创建一个函数 但在 shell 中我必须定义返回类型 如果我不定义返回类型 我将无法创建函数 如何创建一个不返回结果的函数 即创建一个新表的函数
  • 显示即将到来的 Facebook 好友生日

    我仍然得到列表脸书好友以 的形式一月至十二月按升序排列 见下图 但现在我想以以下形式显示 Facebook 好友列表即将到来的生日 Like 最近的热门内容 我使用以下查询来获取好友列表 Log d LOG TAG requestFrien
  • 寻找网站测试自动化的方法

    我们开发定制调查网站 我正在寻找一种方法来自动化这些网站的模式测试 调查通常包含许多复杂的规则和分支 这些规则和分支也会根据项目的响应方式而触发 所有调查在发布给客户之前都经过严格测试 此测试需要大量的手动工作 我想了解一些可以通过回答问题
  • 良好的错误处理实践

    对于 ASP NET 站点来说 什么是良好的错误处理实践 例子 谢谢 与任何 net 项目一样 我发现最好的方法是仅捕获可能发生在给定页面上的特定错误类型 例如 您可以捕获用户给定输入的格式异常 以防 JavaScript 验证失败并且您没
  • 如何重现 Ridge(normalize=True) 的行为?

    这段代码 from sklearn pipeline import make pipeline from sklearn preprocessing import StandardScaler from sklearn linear mod
  • 外键和索引

    我有 2 张桌子 products and 类别 每个类别有很多产品 一个产品可以属于多个类别 products product id int primary auto increment name unique etc 类别 catego