У меня есть таблица SQLite, в которой есть масса данных, миллионы строк. Каждую секунду вставляется строка.
В строках есть столбец для даты создания, который преобразуется в миллисекунды с начала эпохи и сохраняется в виде числа, например 1343224574667. В каждой строке также есть столбец для идентификатора контейнера, это просто строковое поле.
Я пытаюсь выполнить запрос, чтобы получить элементы, созданные в течение определенного периода времени для определенного идентификатора контейнера. Таким образом, запрос будет выглядеть примерно так
Select * from Item where Created > [number] and Created < [number] and ContainerId=[string]
Довольно простой запрос.
У меня есть несколько индексов на столе. Есть один на [Created], и еще один на [Created, ContainerId]. Когда я запускаю этот запрос в небольшом диапазоне времени, запрос выполняется довольно быстро, например, за несколько сотен миллисекунд. Однако расширьте его так, чтобы временной диапазон простирался на неделю или около того, и этот запрос был очень медленным, в среднем более 75 секунд. Есть ли способ ускорить это? Кажется, это безумно долго ждать результатов. Но я не администратор базы данных, так что, возможно, я делаю что-то не так.
Спасибо!
[ContainerID, Created]
? - person Nikola Markovinović   schedule 23.08.2012WITH (NOLOCK)
, как в SQL Server? - person KevinGreen24   schedule 23.08.2012