---
title:  Advanced Querying
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

This section includes advanced querying topics such as using query indexes, using query bind parameters, querying partitioned regions and query debugging.

-   **[Performance Considerations](../querying_basics/performance_considerations.html)**

    This topic covers considerations for improving query performance.

-   **[Monitoring Queries for Low Memory](../querying_basics/monitor_queries_for_low_memory.html)**

    The query monitoring feature prevents out-of-memory exceptions from occurring when you execute queries or create indexes.

-   **[Using Query Bind Parameters](../query_additional/using_query_bind_parameters.html)**

    Using query bind parameters in <%=vars.product_name%> queries is similar to using prepared statements in SQL where parameters can be set during query execution. This allows user to build a query once and execute it multiple times by passing the query conditions during run time.

-   **[Working with Indexes](../query_index/query_index.html)**

    The <%=vars.product_name%> query engine supports indexing. An index can provide significant performance gains for query execution.

-   **[Querying Partitioned Regions](../querying_basics/querying_partitioned_regions.html)**

    <%=vars.product_name%> allows you to manage and store large amounts of data across distributed nodes using partitioned regions. The basic unit of storage for a partitioned region is a bucket, which resides on a <%=vars.product_name%> node and contains all the entries that map to a single hashcode. In a typical partitioned region query, the system distributes the query to all buckets across all nodes, then merges the result sets and sends back the query results.

-   **[Query Debugging](../query_additional/query_debugging.html)**

    You can debug a specific query at the query level by adding the `<trace>` keyword before the query string that you want to debug.


