BENCHMARK(count, expr)
重複執行 expr count 次,回傳值固定為 0。主要用於 mysql 客戶端計時,觀察伺服器處理運算式的速度。
mysql> SELECT BENCHMARK(1000000, ENCODE('hello', 'goodbye'));
+----------------------------------------------+
| BENCHMARK(1000000, ENCODE('hello','goodbye'))|
+----------------------------------------------+
| 0 |
+----------------------------------------------+
1 row in set (4.74 sec)
顯示的 4.74 sec 為客戶端經過時間(含網路延遲),非純 CPU 時間。
mysql> SELECT MD5('test');
-- 0.00 sec
mysql> SELECT BENCHMARK(500000, MD5('test'));
-- 6.55 sec
明顯延長,驗證 BENCHMARK 確實重複執行運算式。
count,會佔用 CPU 資源影響服務。EXPLAIN ANALYZE、sys.schema_table_statistics、Performance Schema、pt-query-digest 等工具。MD5 vs SHA1、AES_ENCRYPT vs DES_ENCRYPT)。BENCHMARK(100000, (SELECT 1)) 觀察單純查詢開銷。