Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
SQLite

Заполнять таблицу (без повторов). Маленькая скорость

13.03.2017, 20:55. Показов 3867. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как ускорить?

В БД 2 таблицы temp, infos с 1 колонкой value.

Добавляем в БД через функцию inspAdd();
0 + 13.5кк = 135сек
13.5кк + 10к = 637сек - 650сек(в среднем. 10 тестов)
13.5кк + 13.5кк = 1323сек ~22мин

C#
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
public int inspAdd()
        {
            // in.txt - добавляемый файл
            if (!File.Exists("in.txt"))
            {
                return 0;
            }
            const string databaseName = @"data\cyber.db";
            SQLiteConnection connection =
                new SQLiteConnection(string.Format("Data Source={0};", databaseName));
            connection.Open();
            SQLiteCommand command = new SQLiteCommand(connection);
 
            using (var transaction = connection.BeginTransaction())
            {
                StreamReader sr = new StreamReader("in.txt");
                string line;
                // Добавляем строки в темп таблицу.
                while (!sr.EndOfStream)
                {
                    line = sr.ReadLine();
                    command.CommandText = "INSERT INTO 'temp' ('value') VALUES (@line);";
                    command.Parameters.Add(new SQLiteParameter("@line", line));
                    command.ExecuteNonQuery();
                }
                sr.Close();
                transaction.Commit();
            }
            // Сверяем темп и infos(осн) таблицу, записи из temp которые не найдены в infos, добавляются в infos 
            command.CommandText = "INSERT INTO  infos (VALUE) SELECT temp.value FROM temp LEFT JOIN infos ON temp.value = infos.Value WHERE infos.Value IS NULL";
            command.ExecuteNonQuery();
            connection.Close();
            command.Dispose();
            // метод чистящий таблицу temp, удаляет все записи.
            Deltemp();
            return 1;
        }
Добавлено через 21 минуту
В общем как я понимаю задержка скорости тут:
SQL
1
INSERT INTO  infos (VALUE) SELECT temp.value FROM temp LEFT JOIN infos ON temp.value = infos.Value WHERE infos.Value IS NULL;
Мб раздробить запрос и отсылать блоками с транзакцией? Но как это будет выглядеть?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2017, 20:55
Ответы с готовыми решениями:

Перегнать данные из любого файла с разделителями в таблицу базы данных (без повторов)
Здравствуйте. В университете дали задание по sql. СУБД Oracle. Необходимо перегнать данные из любого файла с разделителями в таблицу...

Очень маленькая скорость интернета, по Скайпу невозможно разговаривать. Как добавить скорость?
Всем добрый день! Помогите!!!! :( В интернете долго загружаются странички,зависают. Зарание всем спосибо.

Маленькая скорость Wi-Fi
Всем привет. Кароче есть два ноута, Lenovo подключен через кабель к роутеру и Aser по Wi-Fi. так вот на Lenovo когда я его подключаю по...

25
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
15.03.2017, 14:36  [ТС]
Студворк — интернет-сервис помощи студентам
Usaga,
Миниатюры
Заполнять таблицу (без повторов). Маленькая скорость  
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
15.03.2017, 20:09
Цитата Сообщение от Usaga Посмотреть сообщение
Получается, что: temp.value = infos.Value = NULL.
Если для записи из temp нет соответствия из infos, то в результате будет запись (temp.value, NULL)
0
Эксперт .NET
 Аватар для Usaga
14807 / 9580 / 1368
Регистрация: 21.01.2016
Сообщений: 36,088
15.03.2017, 20:11
Да, я втупил.
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,103
16.03.2017, 17:27
а может стоит попробовать
SQL
1
INSERT OR IGNORE
и обойтись без временной таблицы? Вот пример
0
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
18.03.2017, 04:03  [ТС]
nedel, хорошо, попробую. Я так понимаю чтобы дубликатов не было, нужно создать таблицу UNIQUE или лучше на индекс повесить UNIQUE?
0
1168 / 886 / 517
Регистрация: 09.04.2014
Сообщений: 2,103
19.03.2017, 13:41
Цитата Сообщение от Defences Посмотреть сообщение
нужно создать таблицу UNIQUE или лучше на индекс повесить UNIQUE?
задавая UNIQUE при создании таблицы, индекс создается автоматически
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2017, 13:41

маленькая скорость ноут-ПК
Коллеги помогите советом... Купил ноут и девайс TP-LINK TL-WR941ND настроил через него сеть с компом и wi-fi, инет раздается без...

Скорость HDD маленькая
Western Digital Blue 1TB. 7200 rpm 64 mb cache Заявленная скорость идет около 600 мб/с Я решил проверить скорость так: есть игра BF4, и...

Маленькая скорость на upload!
Друзья,суть проблемы такова!По договору провайдер должен предоставить 2-3мб на upload!Тестируем связь speedtest-ом..Ну вообщем все...

Маленькая скорость интернета
Здравствуйте, уже около года дома подключён вайфай, всё работало нормально, хотя и бывали проблемы. Но вот сегодня весь день скорость около...

Маленькая скорость SSD
Здравствуйте. Kingston 120Gb. Пологаю моя скорость очень маленькая, должно доходить до 400мб~ Попробую посмотреть что там с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru