我的數據庫里有有一個int型字段,created,存的是10位整數,是個時間戳,建了索引。在查詢的時候,我這么寫$sql = 'SELECT * FROM products WHERE created > :created ORDER BY created DESC'$bind = array ('created' => '1348466907');$pdo->query ($sql, $bidn); // 這個pdo對象是我封裝的有人說,這里$bind數組里的created應該用int型,這樣MySQL查詢的效率會高。有這么回事么?
3 回答

鴻蒙傳說
TA貢獻1865條經驗 獲得超7個贊
不會影響的。如果你的數據庫字段是int會進行類型轉換的。相反,比如你的數據庫字段是string,你的并且有index而且存的都是int的字符串,當查詢為
select * from t where t.intstring = 123
時會非常慢,因為數據庫會將表中的數據進行類型轉換。由string => int。轉換都是向小的方向轉換的。

揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
觀察對比
EXPLAIN SELECT * FROM products WHERE created > 1348466907 ORDER BY created DESC;EXPLAIN SELECT * FROM products WHERE created > '1348466907' ORDER BY created DESC;
應該沒區別,從嚴謹的角度,你應該指定綁定數據類型如 PDO::PARAM_INT
MySQL查詢的效率重點還是在mysql的設計。

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
跟PDO沒關系。
在小數據量時沒什么。
如果字段類型是INT,SQL指定為字符串。MySQL會多一個數據類型轉換的操作。
理論上來說,什么類型字段,就必須提交什么類型數據。
- 3 回答
- 0 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消