2015-02-24 2 views
0

У меня есть БД размером 50 ГБ, где количество столбцов - 12. У меня есть индексы на нескольких столбцах. Я не могу получить результаты из простого запроса.Простой запрос БД - GAE cloudSQL

SELECT id, subscriber, name, time_ac, type,message, UNIX_TIMESTAMP(time_ac) AS time FROM logs WHERE domain = 'domain' AND type = 'type' ORDER BY time DESC LIMIT 20 OFFSET 0; 

У меня есть указатели на идентификатор, подписчик, имя, время_ак, тип, домен.

Я не получаю результаты быстро. Я использую GAE, поэтому у меня есть 60 секунд, чтобы получить результаты, которые теперь не соответствуют текущему запросу.

+1

у вас нет * have *, чтобы получить результаты так быстро, вы можете сразу вернуться к пользователю, но с помощью токена, который они могут использовать для получения результатов, когда они будут готовы. Таким образом, страница может «опросить» сервер время от времени, пока результаты не будут готовы. –

+0

С набором данных 50 ГБ вы можете попробовать в Big Query и сравнить характеристики для вашего конкретного случая. –

ответ

1

Для того, чтобы вы запрашиваете работу быстрее, вы можете добавить индекс из нескольких столбцов, для domain + type + time столбцов (или по крайней мере domain + type):

CREATE INDEX idx ON logs (domain, type, time); 

Если у вас есть только отдельные индексы несколько столбцов, используется только один из них, а все остальные столбцы обрабатываются без индекса. Посмотрите также EXPLAIN.

Смежные вопросы