### 3.6.7 兩個鍵上搜索
在一個鍵上使用 [`OR`](https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html#operator_or) 非常好優化, 就像是處理 [`AND`](https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html#operator_and) 一樣.
一個棘手的情況是在兩個不同的鍵上使用 [`OR`](https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html#operator_or):
```sql
SELECT field1_index, field2_index FROM test_table
WHERE field1_index = '1' OR field2_index = '1'
```
這種情況優化過. 參閱 [Section 8.2.1.3, “索引合并優化”](https://dev.mysql.com/doc/refman/8.0/en/index-merge-optimization.html).
你還可以使用 [`UNION`](https://dev.mysql.com/doc/refman/8.0/en/union.html) 組合兩個單獨的 [`SELECT`](https://dev.mysql.com/doc/refman/8.0/en/select.html) 語句的輸出解決這個問題. 參閱 [Section 13.2.10.3, “UNION 語法”](https://dev.mysql.com/doc/refman/8.0/en/union.html).
每個 [`SELECT`](https://dev.mysql.com/doc/refman/8.0/en/select.html) 只搜索一個鍵, 可以優化:
```sql
SELECT field1_index, field2_index
FROM test_table WHERE field1_index = '1'
UNION
SELECT field1_index, field2_index
FROM test_table WHERE field2_index = '1';
```
- 簡介
- 前言和法律條款
- 安裝和更新 MySQL
- 在 Linux 上安裝 MySQL
- 在 Linux 上使用 APT 庫安裝 MySQL
- 在 Linux 上使用 Docker 部署 MySQL
- 使用 Docker 部署 MySQL 服務器的基本步驟
- 使用 Docker 部署 MySQL 服務器的更多主題
- 教程
- 連接到服務器和從服務器斷開
- 輸入查詢
- 創建和使用數據庫
- 創建和選擇數據庫
- 創建表
- 將數據加載到表中
- 從表中檢索數據
- 選擇所有數據
- 選擇特定行
- 選擇指定列
- 行排序
- 日期計算
- 處理 NULL 值
- 模式匹配
- 計算行數
- 使用多個表
- 獲取數據庫和表的信息
- 在批處理模式使用 mysql
- 常見查詢示例
- 列的最大值
- 包含某一行最大值的記錄
- 每組中列的最大值
- 擁有某個字段的組間最大值的行
- 使用用戶自定義變量
- 使用外鍵
- 兩個鍵上搜索
- 計算每日訪問量
- 使用 AUTO_INCREMENT
- 在 Apache 中使用 MySQL
- MySQL 程序
- MySQL 客戶端程序
- mysql — MySQL 命令行客戶端
- 優化
- 優化概述
- 優化 SQL 語句
- 優化和索引
- 優化數據庫結構
- 優化 InnoDB 表
- 優化 MyISAM 表
- 優化 MEMORY 表
- 理解查詢執行計劃
- 控制查詢優化器
- 緩沖和緩存
- 優化鎖操作
- 優化 MySQL 服務器
- 測量性能 (Benchmarking)
- 檢查線程信息