2015-02-05 3 views
0

Я столкнулся с сценарием при запуске запроса в движке приложения, что значительно увеличивает мою стоимость. Я пишу ниже запрос для извлечения названия книг -Google app engine - помощь в оптимизации запросов

Iterable<Entity> entities = 
       datastore.prepare(query).asIterable(DEFAULT_FETCH_OPTIONS); 

После этого я бегу цикл, чтобы соответствовать имени с именем пользователя затребовал. Это приводит к чтению данных для всех книг в хранилище данных, а с подробностями книги, день ото дня, в хранилище данных, это еще больше влияет на стоимость, так как она читает весь список. Есть ли альтернатива для получения данных только для запрошенной пользователем информации о книге, так что мне не нужно читать полный хранилище данных? Будет ли SQL помощь или фильтры? Буду признателен, если кто-то предоставит запрос.

ответ

2

У вас есть два варианта:

  1. Если вы подходите название точно, сделать это индексированный поле и использовать фильтр для извлечения только книги с точно таким же названием.

  2. Если вы будете искать в названиях тоже:

    а. Вы можете использовать Search API, чтобы индексировать все заголовки и использовать его для поиска книг, которые ищут ваши пользователи.

    b. Менее оптимальным, но быстрым решением является создание projection query, который читает только названия книг.