2011-06-11 54 views
0

任何人都有將數據表分組的行數很多(50k)的經驗? 我的iPhone 3G需要11秒鐘!用於按語句執行分組。在iPhone 3G中執行sqlite groupby並選擇50.000行的語句

2011-06-11 09:20:50.719 crmclient[1040:307] Begin Select count(*) as count, substr(upper(Pers_LastName),1,1) as identifier From contact_sync2 WHERE 1=1 GROUP BY substr(upper(Pers_LastName),1,1) order by Pers_LastName COLLATE NOCASE 

    2011-06-11 09:20:50.736 crmclient[1040:307] End 

2011-06-11 09:21:05.047 crmclient[1040:307] RSEnd 

2011-06-11 09:21:05.534 crmclient[1040:307] Begin Select Pers_PersonId, Pers_LastName || ', ' || Pers_FirstName AS Pers_FullName From contact_sync2 WHERE 1=1 order by Pers_LastName COLLATE NOCASE LIMIT 0,140 

2011-06-11 09:21:05.546 crmclient[1040:307] End 

2011-06-11 09:21:13.426 crmclient[1040:307] RSEnd 

第一個給我的整個表的結構顯示在iphone上。 第二個給我第140行。當sqlite.step完成時,會打印RSEnd。

非常感謝。我認爲50.000行沒有那麼多。

回答

0

也許在你的情況下更好地保留在第一個字母的單獨列。通過這種方式,您可以從查詢中消除2個函數(substr和upper),因爲這些都需要時間。

的選擇將是:

​​

也把指數上FirstLetter。

+0

謝謝,我無法控制列。但嘗試過。第一個陳述只需要1秒,但第二個陳述需要10秒:( – kaelumania 2011-06-11 08:05:58

0

如果你不能創建索引有多快,它不會使用ORDER BY,然後使用Objective-C進行排序?