1. 程式人生 > >mysql使用的坑

mysql使用的坑

獲取 估計 apply 使用 記錄 設置 exp time 很快

一:

mysql默認是安裝記錄的物理順序取數據的,如果不加order by 排序,可能得不到預期的結果。

(1) 獲取 兩個時間點的 id (很快)

$sql = ‘select id from apply_info where create_time< {$now} limit 1’; (要加 order by id desc)

獲得 idNow

$sql = ‘select id from apply_info where create_time>= {$yesterday} limit 1’ (要加 order by id asc)

獲得 idYt

(2) 每次取 1000

do{

select user_mobile,user_from from apply_info where id <= {$idNow} limit 1000;

idNow -= 1000;

//toDo

} while (idNow >= idYt)

二:

當使用limit時,explain可能會造成誤導

(1)explain估計行數,不考慮limit,可能會對查詢估計過多的檢查行數

(2)類似於SELECT ... FROM TBL LIMIT N這樣的查詢因為用不到索引將要報告為慢查詢,(如果N不大,實際很快)

配置文件設置min-examined-row-limit=Num of Rows,檢查的行數>=這個量的查詢才會被報告為慢查詢,避免誤判

(3)類似於這樣的select .. from tb where key_part1= ? order by key_part2 limit n,explain也要估計出過多的檢查行數

mysql使用的坑