

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# `queryTimeout` SPARQL 查询提示
<a name="sparql-query-hints-queryTimeout"></a>

`queryTimeout` 查询提示指定超时，该值短于在数据库参数组中设置的 `neptune_query_timeout` 值。

如果查询因为此提示而终止，则会引发 `TimeLimitExceededException`，并显示 `Operation terminated (deadline exceeded)` 消息。

## `queryTimeout` SPARQL 提示语法
<a name="sparql-query-hints-queryTimeout-syntax"></a>

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
SELECT ... WHERE {
    hint:Query hint:queryTimeout 10 .
    # OR
    hint:Query hint:queryTimeout "10" .
    # OR
    hint:Query hint:queryTimeout "10"^^xsd:integer .
 ...
}
```

该超时值以毫秒表示。

该超时值必须小于数据库参数组中设置的 `neptune_query_timeout` 值。否则，将会引发带 `Malformed query: Query hint 'queryTimeout' must be less than neptune_query_timeout DB Parameter Group` 消息的 `MalformedQueryException` 异常。

`queryTimeout` 查询提示应在主查询的 `WHERE` 子句中指定，或者在某个子查询的 `WHERE` 子句中指定，如下例所示。

在所有 queries/subqueries 和 SPARQL 更新部分（例如 “插入” 和 “删除”）中只能设置一次。否则，将会引发带 `Malformed query: Query hint 'queryTimeout' must be set only once` 消息的 `MalformedQueryException` 异常。

**可用范围**

`queryTimeout` 提示可以应用于 SPARQL 查询和更新。
+ 在 SPARQL 查询中，它可以出现在主查询或子查询的 WHERE 子句中。
+ 在 SPARQL 更新中，可以在 INSERT、DELETE 或 WHERE 子句中对其进行设置。如果有多个 update 子句，则只能在其中一个中进行设置。

有关查询提示范围的更多信息，请参阅 [Neptune 中的 SPARQL 查询提示范围](sparql-query-hints.md#sparql-query-hints-scope)。

## `queryTimeout` SPARQL 提示示例
<a name="sparql-query-hints-queryTimeout-example"></a>

此处是在 `UPDATE` 主查询的 `WHERE` 子句中使用 `hint:queryTimeout` 的示例。

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
INSERT {
    ?s ?p ?o
} WHERE {
    hint:Query hint:queryTimeout 100 .
    ?s ?p ?o .
}
```

此处，`hint:queryTimeout` 位于子查询的 `WHERE` 子句中：

```
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#>
SELECT * {
   ?s ?p ?o .
   {
      SELECT ?s WHERE {
         hint:Query hint:queryTimeout 100 .
         ?s ?p1 ?o1 .
      }
   }
}
```