有一个表格包含一些值,例如:
id | prefix | name
----+----------------+--------------------------
1 | record1 | name for record 1
2 | record2 | name for record 2
3 | record | name for record 3
4 | another rec | name for record 4
为了选择给定文本的最长前缀并返回名称,我使用以下 SQL:
select top 1 name from prefixes where :text like prefix + '%' order by prefix desc
这正是我所需要的,当我给出文本时,record1
它返回我name for record 2
时record1
返回我name for record 1
,如果我给出a
它返回我name for record 4
。
但问题是这执行了几次并且表更新了很多,所以在我的情况下(只有 210000 行的表)的性能大约是 300 毫秒,我想减少这个,有什么可以改进的查询甚至数据库?