MySQL 使用 InnoDB 要做 SELECT COUNT(*) 會非常慢, 若是此 Table 符合下述狀況
- 很少刪除 (或知道大概會刪多少資料)
- 只需知道大概筆數
- 有設定 auto_increment
就可以考慮直接抓取 auto_increment 的值來當參考.
抓取 MySQL Table auto_increment 的最大值
直接由 information_schema 找 MySQL Table auto_increment 的最大值, 有下述兩種情況:
- 此 Table name 於整個 MySQL DB 中是唯一的:
- SELECT TABLE_ROWS FROM information_schema.tables WHERE table_name='YOUR_TABLE_NAME';
- 此 Table name 於整個 MySQL DB 中有多個, 需要指定 DB Name:
- SELECT TABLE_ROWS FROM information_schema.tables WHERE table_name='YOUR_TABLE_NAME' AND table_schema = 'YOUR_DB_NAME';
- 或下述:
- use YOUR_DB_NAME; // 抓取自己現在的 Database name 可用: SELECT DATABASE();
- SELECT TABLE_ROWS FROM information_schema.tables WHERE table_name='YOUR_TABLE_NAME' AND table_schema = DATABASE();