Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > улучшение произвидительности sqlite


Автор: марина 28.5.2008, 18:28
Есть одна таблица с 4-мя полями( в sqlite)

[code=sql]
номер контакта(пусть A) | свойство контакта(пусть B) | атрибут свойства© | значение атрибута(D)
 [code=sql]
Некоторые пояснения:
У обьекта есть номер(A), много свойств(около 15)(B), у свойст есть много атрибутов(около 5)©, а у каждого атрибута есть значение(D).
Сделаны индексы на номер контакта и свойство контакта.
Первое решение было:
1) вытащить все различные номера контакта (дешевая операция) 
2) потом для каждого номера вытаскивать:
        2.1) те поля у которых нет атрибутов и только одно значение(их несколько 4-5) -- это постоянные поля и есть у каждого обьекта
        2.2) затем вытаскиваем список всех полей (кроме предыдущих -- это легко определяется) -- это не постоянные поля и их может не быть, те у каждого обьекта они свои
         2.3) начинаем для каждого из вытащенных полей - вытаскивать одним запросом значения и атрибуты

Но все это довольно медленно и занимает несколько минут уже на 500 номеров контакта. Больше всего времени уходит на 2-ой пункт. Подскажите как можно улучшить производительность. 


      

Автор: Fortop 28.5.2008, 21:19
1. а какой собственно запрос нужен?
Для разных запросов разные способы ускорения.


Если тебе не нужны агрегационные запросы, то, как вариант,  - нормализовать базу

Разнеси все в 3 разные таблицы

таблица контактов.
таблица свойств
таблица аттрибутов


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)