72 похожих чатов

Вопрос по SQLite C#. Если вызываю этот метод в цикле

100-1000 раз, то проект ооочень надолго задумывается. Что можно предпринять или что нужно поменять, при условии что заранее неизвестно сколько будет итераций? Может метод или запрос неверные?

11 ответов

20 просмотров

Поздрааляю, ты столкнулся с потребностью оптимизировать нагрузку на БД) Это очень частая штука. Select * - означает что мы выбираем всю таблицу, и время выполнения (time complexity) будет n^2 Наша задача уменьшить время выполнения до lg n или n. Мы не хотим читать всю таблицу каждый раз, поэтому делаем индекс. Он будет бинарным деревом с временной сложностью lg n Профит https://sqlite.org/lang_createindex.html https://sqlite.org/faq.html#q19

Serg from FarCry- Автор вопроса
Alexander E
Поздрааляю, ты столкнулся с потребностью оптимизир...

Вот, кстати, запрос создания таблицы CREATE TABLE states ( uid INTEGER NOT NULL UNIQUE, data BLOB, PRIMARY KEY(`uid`) ); Индекс я тут вроде как создаю для uid.

Serg from FarCry
Вот, кстати, запрос создания таблицы CREATE TABLE ...

Попробуй поэкспериментиповать с CREATE INDEX Будет ли разница

Попробуйте вместо вызова 100 раз, вызвать один раз, но достать 100 строк Используя, например, where uid in

Как только мы сделали SELECT *... это уже lg n, как минимум Сохранили в переменную и пошли перебирать , это еще n (Lg n) + n = n Получается линейное время, не квадратичное Точняк

Ilya Zviagin
Да, про N^2 ты подзагнул...

Я для этого здесь и пишу) Шоб разобраться)

Alexander E
Я для этого здесь и пишу) Шоб разобраться)

Ну, написали уже, из одной таблицы макс. будет линейная выборка.

> Вообще-то индексы бывают не только деревянными, есть классический хэш ты про тот кусок кода говоришь или вообще по жизни? Там четко selection * ... > lg n + m, где m, вероятнее всего, равняется одному или на порядки меньше n Здесь нету m, там в кусочке кода мы все элементы которые выбрали перебираем, поэтому m = n

Похожие вопросы

Обсуждают сегодня

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
1. https://www.kaggle.com/code/ahmadrezagholami2001/housing-estimation-linear-regression 2. https://www.kaggle.com/code/ahmadrezagholami2001/uncovering-quality-in-wines-logis...
Ahmadreza
1
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
Карта сайта