Google App Engine: как ускорить запрос к базе данных для свойства короткой строки? - PullRequest
4 голосов
/ 30 сентября 2011

У меня довольно простой запрос к базе данных:

Query q = new Query("person");
q.addFilter("name", Query.FilterOperator.EQUAL, req.getParameter("n"));
PreparedQuery pq = datastore.prepare(q);
for (Entity result : pq.asList(FetchOptions.Builder.withDefaults())) {
// ...
}

Так что просто искать все записи по заданному имени.Имя не уникально и содержит не более 16 символов.Насколько я знаю, индекс для коротких строк (<500 символов) генерируется автоматически.</p>

В таблице около 100000 записей.Запросу базы данных требуется более 8 секунд для извлечения всех (около 10) объектов.

Вопрос теперь в том, как его ускорить?

1 Ответ

5 голосов
/ 30 сентября 2011

Производительность сервера приложений не является показателем производительности. В частности, dev appserver не использует индексы. На всех . Каждый запрос просто сканирует все объекты этого типа.

Так что не вставляйте столько данных в сервер приложений dev. Используйте его для тестирования основных функций, а затем разверните и вставьте 1000000 объектов в сервер приложений производственного ядра приложения, где индексы фактически генерируются и используются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...