這是一個使用Xamarin的Android應用程序。MvvmCross與SqlLite極其緩慢
我有一個簡單的搜索屏幕,用戶根據狀態,城市,州際等選擇篩選(1個或多個選項)。當狀態發生變化時,其他下拉菜單會適當變化(根據該州或城市間存在的城市等)。每次更改狀態下拉菜單以更新其他下拉菜單時,需要花費2秒或更多時間,同時UI無法響應。我還注意到RaisePropertyChanged事件實際上並沒有發生,直到set方法中的所有代碼都完成。我如何加快事情以提供更好的用戶體驗?
以下是緩慢的SQL調用。我正在查找基於父級屬性的子對象列表。
var parentIds = _connection.Table<Parent>().Where(x => x.State == state).Select(x => x.Id);
return _connection.Table<Child>()
.Where(x => parentIds.Contains(x.ParentId))
.Select(x => x.ChildProperty)
.OrderBy(x => x)
.Distinct();
我很好奇,爲什麼這個查詢在SqlLite中工作得更好。這與執行不佳的查詢幾乎完全相同,除了我調用.ToList()以在調用我的Linq查詢之前強制將對象加載到內存中。 –