2012-02-21 27 views
1

我有一個包含名稱的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

回答

1

您的評論說,在特殊情況下一些比較強大的索引功能:

所以讓我們忽略第一字母部分。我怎樣才能以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' 
相關問題