initial commit
This commit is contained in:
43
migrations/00012_create_indexes_part2_gist.sql
Normal file
43
migrations/00012_create_indexes_part2_gist.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
|
||||
-- =========================================
|
||||
-- КРИТИЧЕСКИЕ GIST ИНДЕКСЫ ДЛЯ ГЕОПОИСКА
|
||||
-- =========================================
|
||||
|
||||
-- GIST индекс для геолокации пользователей (волонтёров)
|
||||
-- Используется для поиска волонтёров рядом с заявкой
|
||||
CREATE INDEX idx_users_location_gist ON users USING GIST(location)
|
||||
WHERE location IS NOT NULL AND deleted_at IS NULL;
|
||||
|
||||
-- GIST индекс для геолокации заявок
|
||||
-- Используется для поиска заявок рядом с волонтёром
|
||||
CREATE INDEX idx_requests_location_gist ON requests USING GIST(location)
|
||||
WHERE deleted_at IS NULL;
|
||||
|
||||
-- Составной GIST индекс для геолокации + статус заявки
|
||||
-- Критично для алгоритма матчинга: поиск только одобренных заявок рядом
|
||||
CREATE INDEX idx_requests_location_status_gist ON requests USING GIST(location)
|
||||
WHERE status = 'approved' AND deleted_at IS NULL;
|
||||
|
||||
-- GIST индекс для геолокации активных заявок
|
||||
-- Используется для поиска заявок, готовых к выполнению
|
||||
CREATE INDEX idx_requests_location_active_gist ON requests USING GIST(location)
|
||||
WHERE status IN ('approved', 'in_progress') AND deleted_at IS NULL;
|
||||
|
||||
COMMENT ON INDEX idx_users_location_gist IS 'GIST индекс для быстрого геопоиска волонтёров';
|
||||
COMMENT ON INDEX idx_requests_location_gist IS 'GIST индекс для быстрого геопоиска всех заявок';
|
||||
COMMENT ON INDEX idx_requests_location_status_gist IS 'GIST индекс для поиска одобренных заявок (алгоритм матчинга)';
|
||||
COMMENT ON INDEX idx_requests_location_active_gist IS 'GIST индекс для поиска активных заявок';
|
||||
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
|
||||
DROP INDEX IF EXISTS idx_requests_location_active_gist;
|
||||
DROP INDEX IF EXISTS idx_requests_location_status_gist;
|
||||
DROP INDEX IF EXISTS idx_requests_location_gist;
|
||||
DROP INDEX IF EXISTS idx_users_location_gist;
|
||||
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user