Исправление fMad, (текущая версия) :
у меня там mptt деревья, одно из них с 6 тысячами листиков, которые возвращаются от mptt::get_descendants, а потом через ManyToManyField выборка в 200 сотням тысяч items
индексы стоят
переопределил get_descendants так, чтобы работало не со всем деревом, с определённым уровнем
и четырёх этажный подсточёт количества (для пагинации) items
Item.objects.filter(category__in=category.get_descendants(include_self=True), hidden=False).annotate(count_items=Count('id')).count()
тоже переписан на sql, вместо 4 запросов к 3 таблицам, один с подзапросом к двумя
key_buffer_size = 512M
вроде на уровне Django orm и sql некуда больше оптимизировать — вот и думаю про кеширование.
а что за кеширование на уровне СубД?
имеет ли смысл выносить эти таблицы (read only) в sqlite ?
Исправление fMad, :
у меня там mptt деревья, одно из них с 6 тысячами листиков, которые возвращаются от mptt::get_descendants, а потом через ManyToManyField выборка в 200 сотням тысяч items
индексы стоят
переопределил get_descendants так, чтобы работало не со всем деревом, с определённым уровнем
и четырёх этажный подсточёт количества (для пагинации) items Item.objects.filter(category__in=c['category'].get_descendants(include_self=True), hidden=False).annotate(count_items=Count('id')).count()
тоже переписан на sql, вместо 4 запросов к 3 таблицам, один с подзапросом к двумя
key_buffer_size = 512M
вроде на уровне Django orm и sql некуда больше оптимизировать — вот и думаю про кеширование.
а что за кеширование на уровне СубД?
имеет ли смысл выносить эти таблицы (read only) в sqlite ?
Исходная версия fMad, :
у меня там mptt деревья, одно из них с 6 тысячами листиков, которые возвращаются от mptt::get_descendants, а потом через ManyToManyField выборка в 200 сотням тысяч items
индексы стоят
переопределил get_descendants так, чтобы работало не со всем деревом, с определённым уровнем
и четырёх этажный подсточёт количества (для пагинации) items Item.objects.filter(category__in=c['category'].get_descendants(include_self=True), hidden=False).annotate(count_items=Count('id')).count()
тоже переписан на sql, вместо 4 запросов к 3 таблицам, один с подзапросом к двумя
key_buffer_size = 512M
вроде на уровне Django orm и sql некуда больше оптимизировать — вот и думаю про кеширование.
а что за кеширование на уровне СубД?