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

鴻蒙傳說
TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊
不會影響的。如果你的數(shù)據(jù)庫字段是int會進(jìn)行類型轉(zhuǎn)換的。相反,比如你的數(shù)據(jù)庫字段是string,你的并且有index而且存的都是int的字符串,當(dāng)查詢?yōu)?/p>
select * from t where t.intstring = 123
時會非常慢,因為數(shù)據(jù)庫會將表中的數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換。由string => int。轉(zhuǎn)換都是向小的方向轉(zhuǎn)換的。

揚帆大魚
TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊
觀察對比
EXPLAIN SELECT * FROM products WHERE created > 1348466907 ORDER BY created DESC;EXPLAIN SELECT * FROM products WHERE created > '1348466907' ORDER BY created DESC;
應(yīng)該沒區(qū)別,從嚴(yán)謹(jǐn)?shù)慕嵌?,你?yīng)該指定綁定數(shù)據(jù)類型如 PDO::PARAM_INT
MySQL查詢的效率重點還是在mysql的設(shè)計。

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