Heim > Backend-Entwicklung > PHP-Tutorial > PDO字段类型影响索引的使用吗

PDO字段类型影响索引的使用吗

WBOY
Freigeben: 2016-06-06 20:51:52
Original
1075 Leute haben es durchsucht

我的数据库里有有一个int型字段,created,存的是10位整数,是个时间戳,建了索引。
在查询的时候,我这么写

$sql = 'SELECT * FROM products WHERE created > :created ORDER BY created DESC'
$bind = array ('created' => '1348466907');
$pdo->query ($sql, $bidn); // 这个pdo对象是我封装的
Nach dem Login kopieren
Nach dem Login kopieren

有人说,这里$bind数组里的created应该用int型,这样MySQL查询的效率会高。
有这么回事么?

回复内容:

我的数据库里有有一个int型字段,created,存的是10位整数,是个时间戳,建了索引。
在查询的时候,我这么写

$sql = 'SELECT * FROM products WHERE created > :created ORDER BY created DESC'
$bind = array ('created' => '1348466907');
$pdo->query ($sql, $bidn); // 这个pdo对象是我封装的
Nach dem Login kopieren
Nach dem Login kopieren

有人说,这里$bind数组里的created应该用int型,这样MySQL查询的效率会高。
有这么回事么?

不会影响的。如果你的数据库字段是int会进行类型转换的。相反,比如你的数据库字段是string,你的并且有index而且存的都是int的字符串,当查询为

select * from t where t.intstring = 123
Nach dem Login kopieren

时会非常慢,因为数据库会将表中的数据进行类型转换。由string => int。转换都是向小的方向转换的。

观察对比

EXPLAIN SELECT * FROM products WHERE created > 1348466907 ORDER BY created DESC;
EXPLAIN SELECT * FROM products WHERE created > '1348466907' ORDER BY created DESC;
Nach dem Login kopieren

应该没区别,从严谨的角度,你应该指定绑定数据类型如 PDO::PARAM_INT

MySQL查询的效率重点还是在mysql的设计。

跟PDO没关系。

在小数据量时没什么。

如果字段类型是INT,SQL指定为字符串。MySQL会多一个数据类型转换的操作。
理论上来说,什么类型字段,就必须提交什么类型数据。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage