草庐IT

mysql - 在主键上创建和索引有什么好处吗?

我检查了这篇SO帖子:What'sthedifferencebetweenprimarykey,uniquekey,andindexinMySQL?并找到语句:AlsonotethatcolumnsdefinedasprimarykeysoruniquekeysareautomaticallyindexedinMySQL.基于此,我有两个问题:我是否可以安全地假设在主键上创建索引本身没有性能优势,因为主键在设计上就是一个索引?也许更重要的问题是:如果您正在做人们引用的经典示例,基于姓氏和名字执行SELECT,并且该表有一个您也经常SELECT的主键,您将索引创建为(primary_ke

mysql - has_and_belongs_to_many 连接表中不允许使用主键

我有两个实体、数据中心和项目之间的多对多链接表,在遗留代码中。我发现,这实际上是一对多的关系。作为清理关系的第一步,我想放一个唯一索引在其中一个字段上。现在我收到以下错误:has_and_belongs_to_many连接表(datacenters_projects)中不允许使用主键。我正在使用在ruby​​1.8.7p174和mysqlVer14.12Distrib5.0.77上运行的Rails2.3.8。这不是主键,它只是一个唯一索引。我想这是一个候选键,但我还没有确定它是一个主键。不知道为什么mysql认为这个是主键。我不知道为什么ActiveRecord会反对在has_and_

Mysql:没有主键的分区

我有下表,其中包含大量数据,这就是我要拆分或分区它的原因。问题是我想按不是主键的列进行分区:project_id。在我的例子中,最多会有2或3个不同的项目ID...-id(PRIMARYKEY,AUTOINCREMENT)-project_id(INT)-username(UNIQUE)-username_md5(UNIQUE)(-...morebutirrelevantcolumns)如您所见,我需要保证3列是唯一的(id、用户名、username_md5)。现在,我想对project_id列进行RANGE分区。我想出的唯一解决方案是为所有这些列制作一个丑陋的4列主键(分区要求分区表

mysql - 如何使用 auto_increment 创建从 1000 开始的 INT 字段(不是主键)

我想在我的MYSQL数据库中创建一个字段INT(11),它的起始值为1000,并在每次INSERT后递增1。警告:这不是主键数据库运行在MYSQL6.0和InnoDB引擎上如果可能的话,我可以向谁求助? 最佳答案 你可以有一个auto_increment列,只要它被定义为一个键(它不必是PRIMARYKEY)。例如:CREATETABLEauto_inc_test(IDINTPRIMARYKEY,IncValueINTAUTO_INCREMENT,SomeDataVARCHAR(50),INDEX(IncValue));ALTERT

mysql - Yii 不重置 fixture 表中的主键计数器

Yii没有为数据库中的fixtures重置计数器。这适用于我的开发服务器,但在生产中它不会重置它们。有什么想法吗?开发服务器MySQL5.6.17PHP5.4.28(客户端)Yii1.1.13生产服务器强调文本-Mysql5.6.12-PHP5.4.19(cli)-Yii1.1.13 最佳答案 灯具没有重置自动增量键。您应该明确指定它们:returnarray('firstRecord'=>array('id'=>'1','content'=>'Firstrecordcontent',),'secondRecord'=>array(

mysql - 获取最近插入的主键 slick

有谁知道如何在Slick中获取最近插入的自动递增列的ID?我想使用Slick执行条目插入,然后取回最近使用Scala/Slick插入的主列ID的值,然后将其用于另一次插入。 最佳答案 您可以使用返回:valsomeTable=TableQuery[MyEntity]valthisId=(someTablereturningsomeTable.map(_.id))+=someRow请注意,这会返回插入行的ID(可能是最新的,也可能不是最新的),因此只有在该行存储后才插入到数据库中。这个问题是你不应该将它用于另一个插入,你有一个自动递增

c# - 具有两个主键时的 FluentNhibernate 映射

我的C#应用程序使用FluentNhibernate,我有一个非常基本的问题。我想知道当我们有多个主键时,NHibernate映射类应该是什么样子。这是一个示例,展示了我如何实现映射和其他模型类:CREATETABLEStudents(idINTNOTNULL,nameVARCHAR(20)NOTNULL,ageINTNOTNULL,PRIMARYKEY(id));publicclassStudents{publicvirtualintID{get;set;}publicvirtualstringName{get;set;}publicvirtualintAge{get;set;}}p

php - 在线和本地MySQL数据库需要同步时如何创建主键

我正在使用MySQL和PHP开发一个库存软件,本地数据库将同步到在线数据库。假设我有一张表sell并且sell_id是该表的主键。我通常使用INT和带主键的自动递增。本地数据库1sell表有2个条目(sell_id1,2),本地数据库2sell表有2个条目(sell_id1,2)。如果我将这2个本地销售表条目同步/插入到在线销售表中,它将变为(sell_id1,2,3,4)。随着销售ID的更改,它会影响其他表中使用sell_id作为外键的那些条目。在这种情况下我应该如何计划创建主键。我打算使用alpha-numericid,这对两个数据库都是唯一的。它会产生任何问题或进一步减慢我对数百

mysql - 如何为丢失主键和外键信息的数据库生成ERD/UML?

我有一个结构良好的数据库的表创建脚本。但是,出于某种原因,可以说,表创建脚本不包含主键或外键信息。为使用这些脚本创建的数据库生成ERD/UML的最佳方法是什么-假设索引完好无损。是否有任何工具可用于检查列名并生成ERD/UML?我应该手动执行此操作吗? 最佳答案 您问题的答案-我应该手动执行此操作吗?-是的,恐怕。让我们考虑自动检测主键和外键的可能性。无论这样的算法是已经存在还是由您自己编写,它都必须从给定的数据库方案中确定哪些属性组合符合PK和FK。有一个简单的案例,但我怀疑这不适用于您的数据库,否则您不会问这个问题。如果有命名约

通过主键进行的 MySQL UPDATE 查询有时非常慢

我们网站上的特定UPDATE查询有时会运行得非常慢,并且会检查比必要的多得多的行。它按主键过滤,所以我希望MySQL总是只需要检查一行。以下是MySQL的慢查询日志中的一些示例:#Time:09070212:59:06#User@Host:XXX[XXX]@XXX[XXX]#Query_time:21Lock_time:0Rows_sent:0Rows_examined:500500SETtimestamp=1246532346;UPDATE`folders`SET`folder_id`='1705641',`updated_at`=now()WHERE`folders`.`id`='