在MySQL中使用UUID作为主键有意义吗?除了手动查询的麻烦之外,使用UUID而不是常规INT的优缺点是什么? 最佳答案 在我看来,如果我们谈论大型数据库(和大量插入),在MySQL中使用UUID作为主键是个坏主意。MySQL总是创建集群主键,并且没有关闭它的选项。考虑到这一点,当您插入大量具有非顺序标识符(UUID)的记录时,数据库会变得碎片化,并且每个新插入都将花费更多时间。建议:使用带有GUID的PostgreSQL/MS-SQL/Oracle。对于MySQL使用ints(bigints)。
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。我正在尝试创建一个名为Students的表,其中只有一个字段,student_name。student_name应该是一个VARCHAR和一个主键,因为我想通过他们的名字来唯一标识学生。CREATETABLE'swinters'.'Students'('student_name'VARCHARNOTNULL,PRIMARYKEY('student_name'))ENGINE=InnoDB;MYS
这里我使用的是MySQL,我希望我的主键以一个字母开头,比如D000。然后每次我输入一条新记录时,主键都会自动递增,如下所示:D001D002D003.我该怎么做? 最佳答案 您不能AUTO_INCREMENT类型为VARCHAR的列。你可以做的是让它成为BIGINT和AUTO_INCREMENT,当你需要它作为String时,你可以在它前面加上你的字母'D'喜欢:LongdbKey=...;Stringkey="D"+dbKey;您可以为此创建一个存储过程以将“自动递增”字符串设置为该列的默认值,但这不值得这么麻烦。此外,处理数字
我正在尝试创建一个测试数据库,该数据库是现有数据库的副本。我正在使用Django模型(理论上是与原始数据库一起使用的模型)来执行此操作。我最近从别人那里继承了代码,并试图弄清楚代码到底发生了什么。在模型中,其中一个表有两列被标识为主键。column1=models.IntegerField(primary_key=True)column2=models.IntegerField(primary_key=True)column3=models.CharField(max_length=30)当我尝试将此模型同步到测试数据库时-发生错误:File"/somePathHere/MySQLdb
这就是我想要做的:我有2个表...CREATETABLE`parent`(`id`int(11)NOTNULLAUTO_INCREMENT,`data`text,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8;CREATETABLE`child`(`parent_id`int(11)DEFAULTNULL,`related_ids`int(11)DEFAULTNULL,KEY`parent_id`(`parent_id`),KEY`related_ids`(`related_ids`))ENGINE=I
我的MySQL表的主表由两列组成:space_id(INTEGER)和day(DATE)。CREATETABLE`ck_space_calendar_cache`(`space_id`int(11)NOTNULL,`day`dateNOTNULL,`available`tinyint(1)unsignedNOTNULLDEFAULT'0',`price`decimal(12,2)DEFAULTNULL,`offer`varchar(45)DEFAULTNULL,`presale_date`dateDEFAULTNULL,`presale_price`decimal(12,2)DEFAU
我使用MYSQL创建了一个组合主键的表。例如,col_a和col_b一起用作键。我会经常使用col_a和col_b来获取一行,也会单独使用col_a或col_b来查询一些行。我的问题是,我将如何为它创建索引?我只需要一个复合索引,还是三个索引,其中两个索引用于分隔列?我认为MYSQL会为主键创建索引。但是它会为(col_a,col_b)创建一个复合索引,还是为每个列创建一个索引? 最佳答案 多列索引对于多列索引,索引从左到右工作。给定您的主键:(col_a,col_b)以下是可以使用它的情况:col_a:是。在col_a上搜索时可以
我很想知道人们对以下3种在MySQL中命名数据库表主键的不同约定的看法(以及为什么)?-例1-表名:用户,主键列名:user_id-例2-表名:用户,主键列名:id-例3-表名:用户,主键列名:pk_user_id只是想听听想法,也许在这个过程中学到一些东西:)谢谢。 最佳答案 我会选择选项2。对我来说,“id”本身就足够了。由于表是User,所以“user”中的“id”列表示它是User的标识标准。但是,我必须补充一点,命名约定都是为了保持一致性。通常没有对错之分,只要存在一致的模式并将其应用于整个应用程序,这可能是决定命名约定的
我的印象是,只要让MySQL通过UUID()生成主键,就会使该键在服务器等方面是唯一的。但是,thereisnowaytofetchthelastinsertedUUID,这要求我每次插入时都执行一个额外的select语句。是否可以让PHP生成与MySQL生成的完全相同的UUID()? 最佳答案 不,不可能让PHP生成与MySQL完全相同的UUID(),因为它是一个(完全)随机数。听起来您的问题是您喜欢在MySQL中使用UUID()但不想执行额外的查询来确定新的UUID是什么.那么为什么不让PHP创建UUID用作INSERT查询中的
我的问题是在Laravel框架中连接2个表。一个是动态名称表(它是一个变量),第二个是复合主键。我必须使用查询构建器而不是where()。详情请看我的关注:我有2个表:CREATETABLE`details`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`source_id`int(10)unsignedNOTNULL,`brand_id`int(10)DEFAULTNULL,PRIMARYKEY(`id`));CREATETABLE`links`(`source_id`int(10)unsignedNOTNULL,`brand_id`tinyin