Php 对于mysql查询,将字符串转换为整数更好吗 说明:

Php 对于mysql查询,将字符串转换为整数更好吗 说明:,php,mysql,Php,Mysql,我需要在MySQL数据库表中大量搜索64个字符的字符串(varchar 64)。这可能会在每次1000次的while/for循环中发生(每次obv不同的字符串): 例如: // Every 2 hours: for($i=1;$i<1000;$i++){... //每2小时: 对于($i=1;$i来说,这听起来像是过早的优化 如果您首选的数据类型是varchar(64)和varchar(35),那么从这些数据类型开始。对于大多数目的而言,(string1,string2)上的索引应该足够

我需要在MySQL数据库表中大量搜索64个字符的
字符串
(varchar 64)。这可能会在每次1000次的while/for循环中发生(每次obv不同的字符串):

例如:

// Every 2 hours:
for($i=1;$i<1000;$i++){...
//每2小时:

对于($i=1;$i来说,这听起来像是过早的优化

如果您首选的数据类型是
varchar(64)
varchar(35)
,那么从这些数据类型开始。对于大多数目的而言,
(string1,string2)
上的索引应该足够了

将字符串存储为
char(64)
(或者
char(35)
)这是一个好主意。但是,这要求所有字符串的长度相同。您也可以开始使用
二进制
。这样做的好处是,比较不需要考虑字符编码和排序规则

另一种可能性是考虑散列索引/自适应散列索引而不是B-树索引。使用散列索引的比较应该更快;然而,它们比B-树索引更有限。< /P>


然而,我的猜测是,在这两列上建立一个简单的索引就足够了,性能增强的努力可以花在其他方面。

您可以使用string1和string2创建一个组合索引。

如果您选择使用字符,那么char比varchar快;可能比varchar多20%。始终对每种方法进行基准测试看看哪个更快如果字符串总是正好是64个字符,你应该使用char(64)。效率更高一点。@RobertCathey第一个总是64个字符并且是唯一的,第二个不是它的25-35个字符,如果我对第一个使用cha(64),第二个仍然是varchar(32),效率会更高吗?@Ara yes char()在字符数始终相同时效率更高,因为数据在varchar和char中的存储方式不同。varchar在保存文本的特定范围内灵活分配空间。char()分配您请求的确切数量,因此如果您创建char(64)如果有一个32个字符的字符串,那么它仍然会使用64个字节来创建该字符串,此时varchar的效率更高。