当前位置: 首页 > 面试题库 >

SQL中字符串比较与int联接的性能

鄢飞鸾
2023-03-14
问题内容

公认的是,在int列上搜索表的速度比在字符串列上搜索表的速度快(例如varchar)。

但是,如果我的衬衫表带有“颜色”列,那么创建一个颜色表时,该表上的主键是衬衫表上的外键会更好吗?搜索绿色的衬衫时,该联接是否会抵消在衬衫的“颜色”列中的值为int而不是诸如“绿色”之类的字符串值的性能优势?


问题答案:

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

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

应该将其存储在哪里应该取决于您的应用程序。假设您有一个要向用户展示颜色的应用程序。您可能有一天想用西班牙语,斯瓦希里语或中文显示颜色的名称。如果是这样,拥有一个单独的表将使这种国际化变得更加容易。更平淡的是,您可能希望阻止输入“
Grene”,如果这样,使用这样的表可以使选择列表更容易。

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



 类似资料:
  • 我有一个字符串和一个int,让我们说:and。查看它们是否相同的最快方法是什么,or(或者有更快的方法吗?)? 这是Integer的源代码。parseInt和String。等于

  • 问题内容: 我注意到我正在编写的Python脚本表现得很松散,并将其追溯到无限循环,其中循环条件为。在调试器中运行它,结果发现那条线实际上是。当我将其更改为!=’‘而不是时,它工作正常。 另外,即使比较或值,通常还是最好还是默认使用吗?我一直喜欢使用,因为我发现它在美学上更令人愉悦和pythonic(这就是我陷入这个陷阱的方式…),但是我想知道是否打算仅在你关心找到两个对象时才保留它?具有相同ID

  • 我正在使KStream-KStream连接,其中创建2个内部主题。而KStream-KTable join将创建1个内部主题+1个表。 就性能和其他因素而言,哪个更好?

  • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

  • 问题内容: 有什么方法可以像下面这样在SQL Server 2008存储过程中比较两个字符串? 如果字符串相同,则返回0 如果根据当前的排序顺序,第一个参数小于第二个参数,则返回-1。 否则返回1。 以上方法我在MySQL中找到,但在SQL Server中找不到。 问题答案: SQL Server中没有直接的字符串比较功能 笔记 您可以使用CREATE FUNCTION等通过UDF进行包装 您可能

  • 我将保持这个简短。我正在编写一个模块,它需要比较作为字符串输入的两个大整数(注意:它们很大,但不足以超过Int64边界)。 字符串是填充的,因此选择是采取额外的步骤将其转换为等效的整数,还是将其作为字符串进行比较。 我正在做的是将它们中的每一个都转换为Int64并以这种方式进行比较。但是,我相信字符串比较也可以工作。鉴于我希望它尽可能高效,您对通过以下方式比较整数有什么看法: 或