gpt4 book ai didi

sql - SQL 中字符串比较与 int 连接的性能

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

公认在 int 列上搜索表比在 string 列(例如 varchar)上搜索更快。

但是,如果我有一个带有 Color 列的 Shirt 表,那么创建一个 Color 表,该表上的主键是 Shirt 表上的外键,性能会更高吗?在搜索绿色衬衫时,连接是否会抵消将衬衫上颜色列中的值设为 int 而不是字符串值(例如“绿色”)的性能优势?

最佳答案

与正在执行的其他操作相比,两种方法之间不太可能有太大的性能差异。如果您只有少数几种颜色(最多几百种),则颜色表适合大多数数据库中的单个页面。颜色上的索引将使查找速度非常快,并且不会引起任何 I/O 事件(在第一次运行加载页面之后)。

字符串比较取决于数据库,但它确实涉及一个函数并从页面读取数据。所以,它不是免费的。当然,不同的数据库对于字符串函数可能具有不同的性能特征。

它应该存储在哪里应该是您的应用程序的功能。假设您有一个将颜色呈现给用户的应用程序。有一天,您可能想用西类牙语、斯瓦希里语或中文显示颜色的名称。如果是这样,拥有一个单独的表会使这种国际化更加容易。更简单地说,您可能希望防止输入“Grene”,如果是这样,拥有这样的表格会使选择列表更容易。

另一方面,如果性能是您唯一关心的问题,那也没什么不同。在其他情况下,查找表实际上可能比非规范化表更快。当字符串很长时会发生这种情况,从而增加了较大表中每条记录的长度。更大的表意味着更多的页面,这需要更长的时间才能加载到内存中。

关于sql - SQL 中字符串比较与 int 连接的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431107/

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