Имеет ли значение порядок фильтра в хранилище данных AppEngine?

Мне интересно, имеет ли значение порядок фильтра в хранилище данных appengine?

Например, если у нас есть два фильтра: isDeleted и startDate. Имеет ли значение изменение порядка этих двух свойств фильтра? Или appengine автоматически оптимизирует фильтр.

Например, фильтрация по isDeleted сжимает данные до меньшего размера, тогда имеет смысл фильтровать по порядку: isDeleted, затем startDate. Однако если вы определите фильтр в порядке, обратном startDate и isDeleted, этот запрос может быть неоптимизирован.

Мой вопрос: имеет ли значение порядок объявления фильтра или записи индекса в фильтре? Или эта оптимизация автоматически делается за вас?


person user_1357    schedule 16.05.2013    source источник


Ответы (1)


Да, это важно. Насколько я понимаю, у вас есть индекс isdeleted, startdate. Не создавайте индекс наоборот. Если вы сделаете это наоборот, вы сначала отфильтруете по дате, но позже ему придется сканировать все элементы в этом диапазоне дат, чтобы найти те, которые не удалены. Если вы сделаете это, как я предлагаю, вы будете смотреть только на не удаленные, а затем быстро найдете мой диапазон дат без необходимости сканировать все.

person Zig Mandel    schedule 16.05.2013