草庐IT

php - 数据库设计 : implementing several types of the same entity

我正在编写一个分类广告Web应用程序。该应用程序有几种类型的广告:一般广告(电子产品、玩具、宠物、书籍...)房地产(房屋、公寓、地block……)车辆(摩托车、汽车、货车、卡车...)每种类型都有几个公共(public)字段(id、title、description),还有一些是它的类型独有的:常规广告(无专用字段)房地产(面积、特性类型……)车辆(车辆类型、容积、公里...)对于这种情况,最推荐的方法是什么?一个包含所有字段的表格,将那些字段留空不适用于当前记录集。包含所有广告通用字段的主表,以及包含专有字段的每种类型广告的附加表。每种类型的广告一个表。其他

MySQL 位数据类型存储空间

正在研究mysql认证指南。在位数据类型部分,它说一个BIT(4)每个值4位BIT(n)列的存储要求是(n+7)/8。我不明白这部分。BIT(4)不会只占用4位存储空间吗? 最佳答案 实际上,这是一种对结果进行四舍五入的笨拙方法。这意味着BIT(1)到BIT(8)占用1个字节,BIT(9)到BIT(16)占用2个字节,等等……没有7位开销。将位数除以8并将结果四舍五入。BIT(4)将占用1个字节。 关于MySQL位数据类型存储空间,我们在StackOverflow上找到一个类似的问题:

mysql - int(x) 和 mediumint(x) 之间的区别 - MySQL

MySQL数据类型中TinyInt/SmallInt/MediumInt/Int/BigInt的区别?我想使用长度为11的[unsigned]整数字段,我应该使用什么?[我正在使用PHPMyAdmin] 最佳答案 TypeRangeTINYINT-128to127SMALLINT-32768to32767MEDIUMINT-8388608to8388607INT-2147483648to2147483647BIGINT-9223372036854775808to9223372036854775807你应该使用BIGINT。

mysql - 如何在 mysql 中分配 N 个字节来存储整数而不是 4 个字节或 8 个字节?

假设我想将印度手机号码存储在MySQL表中,由于记录数非常大,我想优化我的存储。印度手机号码为10位数字,通常以7,8或9开头。例如9XXXXXXXXX。相关的MySQL字段是:TypeStorageMinimumValueMaximumValue(Bytes)(Signed/Unsigned)(Signed/Unsigned)INT4-2147483648214748364704294967295如上所示,unsignedINT稍微小一点(大约一半的值),而unsignedBIGINT非常大,可以存储10位数字。5个字节足以存储此数据。我的问题是:-a)是否有一种好方法来分配自定义字

MySQL存储经纬度高精度

我目前将lat/lng值存储在一个小数点后6位精度的数据库中。但是,我需要存储在此数据库中的某些值具有12位小数精度。我的数据库当前设置经纬度float(10,6)是否可以设置存储类型,使其可以处理6位十进制或12位十进制的纬度/经度值? 最佳答案 使用DOUBLE数据类型。您应该能够非破坏性地改变您现有的表格以这种方式工作。例如,altertable`mytable`change`LAT``LAT`doubleNULL,change`LONG``LONG`doubleNULL但请注意不要夸大数据的准确性。普通float32位浮点经

mysql - SQL NOW() 给出 0000-00-00 00 :00:00

我已经使用codeigniter通过NOW()完成了SQL插入。而不是当前时间,我在我的数据库重新编码中得到了0000-00-0000:00:00。我正在使用最新的WAMP作为我的服务器,无法理解问题出在哪里。请帮助我。functioncreateform($form_data){$this->db->set('created','NOW()',TRUE);$this->db->insert('amfbases',$form_data);if($this->db->affected_rows()=='1'){returnTRUE;}returnFALSE;}

mysql - 在 MySQL 中,十进制和 double 之间有什么区别(性能方面)吗?

在我的数据库中,我想存储一个小数分数。分数可以是0到10之间的值,也可以是2.3或9.4之间的值。我最近了解到int只存储整数而不存储小数。我发现您可以使用double或decimal,但我想知道是否有任何区别?我目前使用的是十进制。 最佳答案 通常,小数更精确,double更有效。使用小数点,您可以设置小数点前后的位数。编辑:您可以设置小数位数和加倍,我的错。小数更适用于金钱计算等绝对需要精确性的事情。double更适合分数的准确性不重要的特定情况。参见overviewofnumerictypes在MySQL文档中获取更多信息。

mysql - TinyText 和 Text - MySQL 的存储空间要求差异

在MySQL手册DataTypeStorageRequirements中,我发现:DataTypeStorageRequired--------------------------------------------TINYTEXTL+1bytes,whereL如果我在TinyText和Text字段中存储240个字符[utf8-general],那么Text字段只会比TinyText多占用1个字节?如果我存储1024个字母[utf8-general],文本将占用多少空间?我认为是1024+2个字节!如果我在文本字段中保存单个字符或2^16个字符,它会占用相同的空间吗?

mysql - mysql 列数据类型对保持效率很重要吗?

我是否需要仔细选择我的mysql数据库列的数据类型,或者我是否可以将其设置为没有大小限制的varchar(99999)而不会损害效率?谢谢:) 最佳答案 选择代表您正在存储的数据的数据类型。如果要存储数字,请使用专为存储数字而设计的数据类型。如果要存储日期,请使用专为存储日期而设计的数据类型。如果您的所有数据确实都是文本,请为长度可以变化的列选择VARCHAR,为长度永远不变或尾随空格不重要的列选择CHAR。VARCHAR需要一个额外的字节来存储字段的长度,并且仅仅因为长度是可变的而带来非常小的性能损失,并且这在提取或存储数据时会产

mysql - mysql中3字节数字的含义(MEDIUMINT)

Funnything我发现了abountmysql。MySQL有一个3字节的数字类型——MEDIUMINT。它的范围是从-8388608到8388607。我觉得很奇怪。选择数字类型的大小以获得更好的性能,我认为数据应该与机器字或双字对齐。如果我们需要一些数字范围的限制规则,它必须是外部相对于数据类型。例如:CREATETABLE...(idINTRANGE(0,500)PRIMARYKEY)那么,有人知道为什么是3个字节吗?有什么理由吗? 最佳答案 原因是如果您有一个在3字节范围内的数字,您不会通过使用4字节存储它来浪费空间。当您有