## 27.5 性能模式查询

预过滤限制了收集哪些事件信息并且独立于任何特定用户。相比之下，后过滤是由个人用户通过使用适当的查询来执行的。`在哪里`限制在应用预过滤后从可用事件中选择哪些事件信息的子句。

在[第 27.4.3 节，“事件预过滤”](performance-schema-pre-filtering.html)，一个示例展示了如何对文件工具进行预过滤。如果事件表同时包含文件和非文件信息，则后过滤是另一种仅查看文件事件信息的方法。添加一个`在哪里`查询子句以适当地限制事件选择：

```
mysql> SELECT THREAD_ID, NUMBER_OF_BYTES
       FROM performance_schema.events_waits_history
       WHERE EVENT_NAME LIKE 'wait/io/file/%'
       AND NUMBER_OF_BYTES IS NOT NULL;
+-----------+-----------------+
| THREAD_ID | NUMBER_OF_BYTES |
+-----------+-----------------+
|        11 |              66 |
|        11 |              47 |
|        11 |             139 |
|         5 |              24 |
|         5 |             834 |
+-----------+-----------------+
```

大多数性能模式表都有索引，这使优化器可以访问除全表扫描之外的执行计划。这些索引还提高了相关对象的性能，例如[`系统`](sys-schema.html)使用这些表的模式视图。有关详细信息，请参阅[第 8.2.4 节，“优化性能模式查询”](performance-schema-optimization.html).
