草庐IT

Indexing

全部标签

sql - 如何在 MySQL 中重命名索引

我想重命名一个索引。我看过altertable文档,但我无法弄清楚简单地重命名索引的语法。通过MySQLGUI执行此操作时,它会删除索引并创建一个新索引。虽然这可行,但我想避免重建整个索引只是为了更改索引的名称。[附加信息]在更改表文档中指出Alterationsthatmodifyonlytablemetadataandnottabledatacanbemadeimmediatelybyalteringthetable's.frmfileandnottouchingtablecontents.Thefollowingchangesarefastalterationsthatcanbe

sql - 如何在 MySQL 中重命名索引

我想重命名一个索引。我看过altertable文档,但我无法弄清楚简单地重命名索引的语法。通过MySQLGUI执行此操作时,它会删除索引并创建一个新索引。虽然这可行,但我想避免重建整个索引只是为了更改索引的名称。[附加信息]在更改表文档中指出Alterationsthatmodifyonlytablemetadataandnottabledatacanbemadeimmediatelybyalteringthetable's.frmfileandnottouchingtablecontents.Thefollowingchangesarefastalterationsthatcanbe

mysql - 索引 bool 字段是否有任何性能提升?

我正要编写一个包含WHEREisok=1的查询。顾名思义,isok是一个bool字段(实际上是一个TINYINT(1)UNSIGNED,根据需要设置为0或1)。索引该字段是否有任何性能提升?引擎(在这种情况下为InnoDB)在查找索引时的性能会更好还是更差? 最佳答案 只是在这里对其他几个答案进行更详细的说明,因为根据我的经验,那些查看此类问题的人与我们在同一条船上,我们都听说索引bool字段毫无意义,但是...我们有一个包含大约400万行的表,一次只有大约1000行左右会标记一个bool开关,这就是我们搜索的内容。在我们的bool

mysql - 索引 bool 字段是否有任何性能提升?

我正要编写一个包含WHEREisok=1的查询。顾名思义,isok是一个bool字段(实际上是一个TINYINT(1)UNSIGNED,根据需要设置为0或1)。索引该字段是否有任何性能提升?引擎(在这种情况下为InnoDB)在查找索引时的性能会更好还是更差? 最佳答案 只是在这里对其他几个答案进行更详细的说明,因为根据我的经验,那些查看此类问题的人与我们在同一条船上,我们都听说索引bool字段毫无意义,但是...我们有一个包含大约400万行的表,一次只有大约1000行左右会标记一个bool开关,这就是我们搜索的内容。在我们的bool

mysql - 在一个巨大的 MySQL 生产表上创建一个没有表锁定的索引

我需要在约5M行的MySQL表上创建一个索引。它是一个生产表,如果我运行CREATEINDEX语句,我担心所有内容都会被完全阻塞...有没有办法在不阻塞插入和选择的情况下创建该索引?只是想知道我不必停止,创建索引并重新启动我的系统! 最佳答案 [2017]更新:MySQL5.6支持在线索引更新https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html#online-ddl-index-syntax-notesInMySQL5.6andhigher

mysql - 在一个巨大的 MySQL 生产表上创建一个没有表锁定的索引

我需要在约5M行的MySQL表上创建一个索引。它是一个生产表,如果我运行CREATEINDEX语句,我担心所有内容都会被完全阻塞...有没有办法在不阻塞插入和选择的情况下创建该索引?只是想知道我不必停止,创建索引并重新启动我的系统! 最佳答案 [2017]更新:MySQL5.6支持在线索引更新https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html#online-ddl-index-syntax-notesInMySQL5.6andhigher

MySQL - 为什么不索引每个字段?

最近我了解了索引的神奇之处,并且性能有了显着提高。但是,根据我所学到的一切,我似乎无法找到这个问题的答案。索引很棒,但为什么不能只索引所有字段以使表格变得异常快呢?我确信不这样做是有充分理由的,但是在一个有30个字段的表中三个字段怎么样?10在30领域?应该在哪里划线,为什么? 最佳答案 索引占用内存(RAM)空间;索引太多或太大,数据库将不得不将它们交换到磁盘和从磁盘交换。它们还增加了插入和删除时间(必须为插入/删除/更新的每条数据更新每个索引)。你没有无限的内存。使所有索引都适合RAM=好。你没有无限的时间。仅索引您需要索引的列

MySQL - 为什么不索引每个字段?

最近我了解了索引的神奇之处,并且性能有了显着提高。但是,根据我所学到的一切,我似乎无法找到这个问题的答案。索引很棒,但为什么不能只索引所有字段以使表格变得异常快呢?我确信不这样做是有充分理由的,但是在一个有30个字段的表中三个字段怎么样?10在30领域?应该在哪里划线,为什么? 最佳答案 索引占用内存(RAM)空间;索引太多或太大,数据库将不得不将它们交换到磁盘和从磁盘交换。它们还增加了插入和删除时间(必须为插入/删除/更新的每条数据更新每个索引)。你没有无限的内存。使所有索引都适合RAM=好。你没有无限的时间。仅索引您需要索引的列

mysql - 在 MySQL 中使用 INDEX 和 KEY 有什么区别?

我知道如何在下面的代码中使用INDEX。而且我知道如何使用外键和主键。CREATETABLEtasks(task_idINTUNSIGNEDNOTNULLAUTO_INCREMENT,parent_idINTUNSIGNEDNOTNULLDEFAULT0,taskVARCHAR(100)NOTNULL,date_addedTIMESTAMPNOTNULL,date_completedTIMESTAMP,PRIMARYKEY(task_id),INDEXparent(parent_id),....但是我发现了一个使用KEY而不是INDEX的代码,如下所示。...KEYorder_date

mysql - 在 MySQL 中使用 INDEX 和 KEY 有什么区别?

我知道如何在下面的代码中使用INDEX。而且我知道如何使用外键和主键。CREATETABLEtasks(task_idINTUNSIGNEDNOTNULLAUTO_INCREMENT,parent_idINTUNSIGNEDNOTNULLDEFAULT0,taskVARCHAR(100)NOTNULL,date_addedTIMESTAMPNOTNULL,date_completedTIMESTAMP,PRIMARYKEY(task_id),INDEXparent(parent_id),....但是我发现了一个使用KEY而不是INDEX的代码,如下所示。...KEYorder_date