我有一个包含100万条记录的表,其中包含名称。我希望能够按名称中的第一个字母对列表进行排序。
.. ABCDEFGHIJKLMNOPQRSTUVWXYZ
设置db表以允许按table.name字段中的第一个字符进行搜索的最有效方法是什么?
现在最好的想法是添加一个额外的字段,该字段将名称的第一个字符存储为观察者,索引该字段,然后按该字段排序。问题是它不再是按字母顺序排列的。
有什么建议吗?
答案 0 :(得分:1)
你在评论中说:
所以我们忽略第一个字母部分。我怎么能以A开头的所有记录?所有的A都没有B ... z?谢谢 - AnApprentice 2月21日15:30
我认为您的意思是How can I RETURN all records...
这就是答案:
select * from t
where substr(name, 1, 1) = 'A'
答案 1 :(得分:0)
我同意上面的问题,为什么你希望这样做 - 整个领域的常规索引在功能上是等价的。 PostgreSQL(在v.9中有一些新的)对于特殊情况有一些相当强大的索引功能,你可能想在这里阅读http://www.postgresql.org/docs/9.1/interactive/sql-createindex.html