Форум программистов, компьютерный форум CyberForum.ru

Ускорение SELECT запроса в SQLite - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Как из одного потока вызвать метод таким образом, чтобы он выполнялся в другом потоке http://www.cyberforum.ru/android-dev/thread1008717.html
Значит имеется некая активность, которая запускает сервер по нажатии кнопки, этот сервер в свою очередь запускает выполнение своей фоновой работы в отдельном потоке(при помощи AsyncTask), чтобы не блокировать основной поток. Итак в этом отдельном потоке требуется запустить активность от лица первой активности, которая запустила сервис. Как это сделать? Запускать активность в отдельном, отличном...
Android Navigation Drawer или ViewPager Привет! Обращаюсь за советом. С помощью чего можно сделать аналог Navigation Drawer, но так чтобы при его закрытии DrawerLayout оставался частично открытым. Поясню, что хочется. Есть некая навигационная панель - справа или слева - не принципиально. Панель - это ListView, состоящая из ImageView и TextView. Необходимо сделать так, чтобы при закрытии панели, она бы не скрывалась бы полностью, а... http://www.cyberforum.ru/android-dev/thread1008685.html
GridView и ViewPager Android
Всем привет. У меня есть GridView, в котором можно, конечно же, тыкать на пункты списка и открывать новую активити: например, preview картинки в GridView, тыкаем, получаем новую активити с картинкой во весь её размер. Но картинки мы ещё можем слайдить, чтобы перейти к следующей или предыдущей. Есть мысль, что можно реализовать это с помощью ViewPager'а, но слегка путаюсь с адаптерами....
Android Звонилка, как заменить стандартное окно дозвона на собственное?
Написал звонилку типа: protected void onCreate(Bundle savedInstanceState) { Intent intent = getIntent(); String number = intent.getStringExtra("number"); Intent dial = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number)); startActivity(dial); super.onCreate(savedInstanceState); setContentView(R.layout.voice_dial);
Android Проверка папки на изменения файлов http://www.cyberforum.ru/android-dev/thread1008256.html
Доброго времени суток.Хочу сделать мелкое приложения со следующими функциями. 1)Проверка папки на изменение файлов,создание или удаление 2)Если добавили то отправить этот файл на почту. Каким образом на Android это можно сделать?Гуглю уже третий час но так пока ничего не нашел.И как вообще создать папку?Надеюсь на ваше понимание)
Android Eclipse, как изменить домен по умолчанию в имени пакета при создании проекта? При создании андроид проекта нужно указать имя пакета. По умолчанию там стоит com.example Можно ли изменить его на что-либо другое? подробнее

Показать сообщение отдельно
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110

Ускорение SELECT запроса в SQLite - Android

15.11.2013, 16:28. Просмотров 3363. Ответов 17
Метки (Все метки)

Добрый день! Имеется база на SQLite. Содержит следующую структуру таблиц:

Форум - Топик - Сообщения

При запросе одного форума, надо получить список топиков, и в каждом из топиком список сообщенией. В сумме таблицы содержат около 4 миллионов записей, но самая большая таблица "Сообщения".

Но при запросе хотя бы одного форума, программа обрабатывает это около 2х-3х минут, что очень долго. На компьютере на это уходит 3мс.

Вот мой код, может в нем что не так?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
    ArrayList<Forum> listForums = new ArrayList<Forum>();
        
        String[] whereArgs = new String[] {Long.toString(id)};
        String[] forums = new String[] {"id","name","deel"};
        Cursor cursor = database.query("forum", forums, "id = ?", whereArgs, null, null, null);
        cursor.moveToFirst();
        
        while (!cursor.isAfterLast()) 
        {
            Forum forum = new Forum();
            forum.setName(cursor.getString(1));
            forum.setOmschrijving(cursor.getString(2));
            
            ArrayList<Topic> listTopic = new ArrayList<Topic>();
            
                String[] whereArgsCat = new String[] {Integer.toString(cursor.getInt(0))};
                String[] topics = new String[] {"idTopic"};
                Cursor cursorCat = database.query("ForumTopic", topics, "idForum = ?", whereArgsCat, null, null, null);
                cursorCat.moveToFirst();
                while (!cursorCat.isAfterLast()) 
                {
                    Topic topic = new Topic();
                    topic.setName(cursorCat.getString(0));
                    ArrayList<Messages> listMessages = new ArrayList<Messages>();
                        String[] whereArgsVert = new String[] {Integer.toString(cursorCat.getInt(0))};
                        String[] vert = new String[] {"id","name","deel"};
                        Cursor cursorVert = database.query("message", vert, "id IN(SELECT idMessage FROM topicmessage where idtopic=?)", whereArgsVert, null, null, null);
                        cursorVert.moveToFirst();
                        
                        while (!cursorVert.isAfterLast()) 
                        {
                            Messages message = new Messages();
                            message.setVoorOmschrijving(cursorVert.getString(0));
                            message.setName(cursorVert.getString(1));
                            message.setOmschrijving(cursorVert.getString(2));
                            listBetekenis.add(message);
                            cursorVert.moveToNext();
                        }
                        cursorVert.close();
                        topic.setListBetekenis(listMessages);
                    listTopic.add(topic);
                    cursorCat.moveToNext();
                }
                cursorCat.close();
                forum.setListCategory(listTopic);
                listForums.add(forum);
            cursor.moveToNext();
            }
        cursor.close();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru