| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление 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 разные таблицы таблица контактов. таблица свойств таблица аттрибутов |