gpt4 book ai didi

sql - ORACLE SQL,其中结尾需要时间

转载 作者:行者123 更新时间:2023-12-02 00:38:27 25 4
gpt4 key购买 nike

我们有一个表,每当用户登录到应用程序时,我们都会在其中记录详细信息。我们使用下面的查询来获取工作正常的详细信息

select username 
from table
where username like 'abc%'
order by timestamp desc

我们得到结果

abcxyz

但是当我们将 % 放在字符串的开头时,它会花费太多时间并且不会给出任何结果。

select username 
from table
where username like '%xyz'
order by timestamp desc

select username 
from table
where username like '%cx%'
order by timestamp desc

用户名列是索引 PFB 详细信息。column_position:1column_length:512CHAR_length:512后裔:ACS

有人可以解释这种行为吗?我怎样才能得到第 2/3 次查询的结果

最佳答案

如果 username 列上有索引,您的观察将完全符合预期。如果它确实有索引,那么以下查询可以在搜索匹配的用户记录时利用该索引:

select username from table where username like 'abc%' order by timestamp desc

username 上的索引有助于上述 LIKE 表达式的原因是 B 树是从左到右在用户名上构建的。

另一方面,username 上的索引不会对以下查询有帮助:

select username from table where username like '%xyz' order by timestamp desc

在这种情况下,B-tree 无法帮助我们定位 xyz 中以 ending 结尾的用户名。出现这种情况是因为此类匹配记录可能出现在树中的任何位置。相反,可能需要全表扫描。

有关更多信息,您可以尝试对两个查询运行解释。

关于sql - ORACLE SQL,其中结尾需要时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48295621/

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