草庐IT

Mysql 中等 int 与 int 性能

我有一个简单的用户表,我想我将拥有的最大用户数是300,000。目前我正在使用:CREATETABLEusers(idINTUNSIGNEDAUTOINCREMENTPRIMARYKEY,....当然,我还有许多其他表,其中users(id)是外键。我读到,由于id不会使用INT的全部最大值,因此最好使用:MEDIUMINT,它将提供更好的性能。这是真的吗?(我在WindowsServer2008上使用mysql) 最佳答案 有时我会考虑使用MEDIUMINT..在300K行上..MEDIUMINT为您提供了足够的空间,最多1600

php - 在 mysql 查询中引用 int 值

我养成了通过我的int函数过滤用户提交的变量的习惯,这确保它是一个数字(如果不是返回0)并且不在mysql查询中引用该变量。这是不好的做法吗?我想我出于性能原因决定这样做。另外,我一直认为数字不应该放在引号中。例子:if($perpage!=$user['perpage']){if($perpage==50||$perpage==100||$perpage==200){$DB->query("UPDATEusersSETperpage=$perpageWHEREid=$user[id]",__FILE__,__LINE__);}} 最佳答案

mysql - Laravel 架构构建器 INT(11) on integer() 和 INT(10) on unsignedInteger()

为什么Laravel将整数列创建为INT(11)并将无符号整数列创建为INT(10)?$table->integer('integer');//INT(11)$table->unsignedInteger('unsignedInteger');//INT(10)unsigned$table->integer('integer_then_unsigned')->unsigned();//INT(10)unsigned既然无符号整数的最大值几乎可以是原来的两倍,难道不应该反过来吗? 最佳答案 因为整数可以带符号时的减号。无符号整数将有1

mysql - 从 int 列查询字符串?

我有一张table:CREATETABLE`ids`(idint(11)notnullauto_increment,PRIMARYKEY(id));它包含一些ID:111、112、113、114等我做了一个查询:SELECT*FROM`ids`WHEREid='112abcdefg'我什么也没想到,但我得到了一个结果,一行ID为112。似乎MySQL悄悄地将我的字符串转换为整数,然后将它与列值进行比较。如何更改查询,以便从id列查询相同的字符串不会像我预期的那样给出结果?MySQL有没有严格的比较修饰符? 最佳答案 一种选择是将11

php - STR_TO_DATE 在我的查询中不起作用

我在具有varchar数据类型的数据库中有日期字段。现在我必须将日期与当前日期进行比较,但由于数据类型(varchar)结果无法正常显示。我不想更改数据库中的数据类型,那么如何在codeigniter中查询?在我的数据库中,日期是这种格式30/11/2015我当前的查询://herevdistablefield(onecolumn).$cd=date('d/m/Y');//currentdate$this->db->where("date_format(STR_TO_DATE(vd,'%d/%m/%Y'),'%d/%m/%Y')>",$cd);//comparingdatewithcu

mysql - #1411 - INSERT INTO...SELECT 函数 str_to_date 的日期时间值不正确

这些查询需要字符串到日期的转换,因为时间戳存储为字符串,并且日志记录应用程序是不可更改的。我有一个完美运行的选择查询->(SELECTmain.user_id,main.TimestampFROM`user_table`mainWHERESTR_To_DATE(main.Timestamp,'%a%b%d%H:%i:%sCST%Y')这将从我的表中选择所有但最近添加的用户ID和时间戳。但是,当我尝试将其插入到另一个表中时...就像这样->INSERTINTOuser_table_temp(`user_id`,`Timestamp`)(SELECTmain.user_id,main.Ti

php - 使用\Zend_Db_Table_Abstract::find($id)。 MySQL SET 字段返回字符串而不是(想要的)int

基本问题如何从表映射器中获取“类型”列作为整数值?我有一个运行网站的PHPZendFramework1.12应用程序。MySQL内部有多个包含多个列的表。在两个表中我使用了SET类型。该列被命名为“type”和“set('LOCAL','EXTERNAL')'”。请不要将此字段类型与ENUM混淆!到目前为止没有问题,查询表并获取类型列为INT或STRING不是问题:$Sql=$Db->select()->from('tablename',['type_as_int'=>new\Zend_Db_Expr('type+0')]);//returnsINT(ifbothareselected

sql - 哪种排序规则最适合 MySQL 中的数据类型 INT?

当一个字段是INT(数据类型)时,我在MySQL中应该选择什么作为排序规则? 最佳答案 排序规则影响字符串排序。它对数字数据类型没有任何影响。但是,它可能会影响嵌入字符串中的数字的排序方式。但这对INT等数字数据类型仍然没有影响。 关于sql-哪种排序规则最适合MySQL中的数据类型INT?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1932403/

mysql - 将 FLOAT 值插入 MySQL 中的 INT 列时如何获得警告?

我创建了一个包含INT类型列的表:CREATETEMPORARYTABLE`myTab`(`int`INT,`text`TEXT,`float`FLOAT);现在我尝试在INT列中添加一个浮点值INSERTINTO`myTab`(`int`)VALUES(13.34);我没有收到警告:SHOWWARNINGS;虽然后面的列只有13个:SELECT*FROM`myTab`;当将浮点值添加到整数列时,是否可能以某种方式收到警告?我目前正在使用mysqlVer14.14Distrib5.5.31,用于使用readline6.2的debian-linux-gnu(i686)添加:我想避免为每个

mysql - 我如何在 MySQL 5.1 中将一个 int 转换为一个位?

我正在从SQLServer过渡到MySQL5.1,似乎被绊倒了尝试使用select语句创建一个表,以便列有点。理想情况下,以下内容会起作用:CREATETABLEmyNewTableASSELECTcast(myIntThatIsZeroOrOneasbit)ASmyBitFROMmyOldtable但是sql对转换有点不满意。我如何告诉它选择一个int列(我知道它只有0和1)作为位? 最佳答案 你不能!CAST和CONVERT仅适用于:二进制[(N)]字符[(N)]日期日期时间十进制[(M[,D])]已签名[整数]时间无符号[整数