如何根据标题的第一个字母对100万条记录的列表进行排序

问题描述:

我有一个包含名称的100万条记录的表。我希望能够按名称中的第一个字母对列表进行排序。如何根据标题的第一个字母对100万条记录的列表进行排序

.. ABCDEFGHIJKLMNOPQRSTUVWXYZ

设置的最有效方法是什么db表允许通过在table.name领域的第一个字符搜索?

现在最好的想法是添加一个额外的字段,它将名称的第一个字符存储为观察者,索引该字段,然后按该字段进行排序。问题是不再需要按字母顺序排列。

有什么建议吗?

+5

为什么只有第一个字母? *“aardvark”*和*“aardwolf”应该如何排序?只需指定一个ORDER BY子句,数据库就可以使用词法顺序轻松地对整个文本字段进行排序。 – deceze 2012-02-21 06:57:18

+2

排序是否花费了不合理的时间(可能是你经常排序)?你在名称列上有适当的索引吗? – Seth 2012-02-21 06:58:53

+0

我如何通过字母A进行订单,其中A是table.name字段中的第一个字符? – AnApprentice 2012-02-21 07:05:00

我同意上面的问题,为什么你要想要做到这一点 - 整个领域的正则指数在功能上是等价的。 PostgreSQL的(与V 9一些新的)有,你可能想了解这里http://www.postgresql.org/docs/9.1/interactive/sql-createindex.html

您的评论说,在特殊情况下一些比较强大的索引功能:

所以让我们忽略第一字母部分。我怎样才能以A开头的所有记录?所有A的没有B ... Z?谢谢 - AnApprentice 2月21日15时30分

我issume你的意思How can I RETURN all records...

这就是答案:

select * from t 
where substr(name, 1, 1) = 'A'