草庐IT

Indexing

全部标签

mysql - 何时针对复合索引选择散列列

我想知道在哪些情况下应该首选带有索引的单个散列列而不是使用复合索引。在我的例子中,我有两个包含大约1个mio数据集的表,其中一个从另一个表接收更新值(它是一个数据导入例程)。我的环境使用MySQL5.1和5.5。例子:CREATETABLEpermanent(ref_id_1INT(10),ref_id_2INT(10),ref_id_3INT(10),ref_id_4INT(10),ref_dateDATE,valueINT(10));CREATETABLEimport(ref_id_1INT(10),ref_id_2INT(10),ref_id_3INT(10),ref_id_4I

mysql - 查询 : Tables with indexing/foregeing keys/correlated data

我目前正在使用MySQL数据库表结构。我在网上找到了一个很棒的表结构,但我不确定如何复制这样的东西。我对此很陌生,我请求帮助创建一个查询,该查询将创建所有表(具有相关数据(索引)、外键、多对多关系等)。随机我能够进行查询以选择所有字段:SELECT*FROMscheduleINNERJOINsemesterONschedule.semester_id=semester.idINNERJOINoffice_hoursONoffice_hours.schedule_id=schedule.semester_idINNERJOINfacultyONfaculty.id=office_hour

条件为 "field IS NULL"的 Mysql 索引

我有一个包含DATETIME字段“deleted_at”的表,我希望这种请求能够快速执行:SELECT*FROMtableWHEREdeleted_atISNULL是否可以索引字段的“空性”而不是索引我字段的每个日期时间值? 最佳答案 您可以indexnullablecolumns,但是只有在对空值有很好的选择性时才会使用索引,即只有一小部分数据实际上是空值。不幸的是,MySqldoesn'tsupportfiltered/partialindexes像SqlServer,它允许您只为NULL行建立索引。所以TL;DR,如果dele

mysql - MySQL 全文索引额外消耗多少存储空间?

我正在寻找一种方法来估计如果MySQLTEXT列获得全文索引将需要多少额外存储空间。直观地说全文索引的大小取决于文本的总长度,但究竟是什么影响了它? 最佳答案 “我有200MB的文本数据要编制索引,结果索引为130MB。”因此它与您编制索引的数据的总大小相当。 关于mysql-MySQL全文索引额外消耗多少存储空间?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3976604/

使用索引优化 Mysql 查询

我的数据库架构由以下两个表组成:CREATETABLE`categories`(`id`bigint(20)NOTNULLauto_increment,`title`varchar(128)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8;和CREATETABLE`articles`(`id`bigint(20)NOTNULLauto_increment,`title`varchar(512)NOTNULL,`body`longtext,`state`varchar(7)NOTNULL,`type`varchar(6)N

mysql select with in子句不使用索引

我有一个主键为id的联系人表。它还有一个二级索引idx_id_del_user(id,deleted,user_id)。以下查询使用了索引,因此非常快-selectidfromjts_contactswhereid='00000402-25c8-7375-e3df-4ec5b66de11d'anddeleted=0;1行在0.0098秒内获取然而,当我使用in子句时,外部查询进入全表扫描。我希望它使用主键或idx_id_del_user。select*fromjts_contactsFORCEINDEX(idx_id_del_user)whereidin(selectidfromjts

索引为 : do many inserts/updates influence performance? 的 MySQL 表 如果是,如何再次加速?

问题是,如果您在表中的某些字段上有索引,如果在大量插入(或更新)之后性能会受到影响,是否有某种方法可以再次加快速度?我不确定,但我已经阅读了很多关于提高性能的文章,以至于我有点困惑。是否碎片化,例如适用于这个问题?或者别的什么?还是对具有少量索引的表进行多次插入根本不会影响性能? 最佳答案 您可能正在寻找OPTIMIZEtable;。请参阅mysqldocumentation中的此处. 关于索引为:domanyinserts/updatesinfluenceperformance?的My

mysql - 使用 MySQL Workbench 在已经索引的列上创建外键

我正在使用Workbench创建数据库模型并创建下表:CREATETABLEIFNOTEXISTS`Database`.`table1`(`idtable1`INTNOTNULL,`uniquecolumn`INTNOTNULL,PRIMARYKEY(`idtable1`),UNIQUEINDEX`UniqueIndex`(`uniquecolumn`ASC))ENGINE=InnoDB它有一个主键,在我的第二列上有一个唯一键。当我对它们创建外键约束时,Workbench会自动添加两个索引:CREATETABLEIFNOTEXISTS`Database`.`table1`(`idtab

带有连接的选择查询中的 MySQL 5 亿行表

我担心表完全填充后下面查询的性能。到目前为止,它正在开发中并且在处理虚拟数据时表现良好。“adress_zoo”表在填满后将包含大约5亿条记录。“adress_zoo”表如下所示:CREATETABLE`adress_zoo`(`adress_id`int(11)NOTNULL,`zoo_id`int(11)NOTNULL,UNIQUEKEY`pk`(`adress_id`,`zoo_id`),KEY`adress_id`(`adress_id`))ENGINE=InnoDBDEFAULTCHARSET=latin1;其他表每个最多包含500条记录。完整的查询如下所示:SELECTa.

mysql - 是什么减慢了 MySQL 表上的索引

于是查阅了MySQL中关于索引的文献,但还是对下面的内容一头雾水。有人解释说,索引可能会在计算时间方面减慢MySQL查询的速度。据解释,这是基于对具有所述索引的表进行操作的查询,称为sayindex_A。我知道在某些时候MySQL必须为INDEX_A重写它的索引文件作为相关表上发生的UPDATE、INSERT或DELETE查询的结果。我不明白的是这到底是怎么发生的。它必须在每次UPDATE、INSERT或DELETE之后发生吗?(这似乎不是这种情况。)还是在发出重写之前需要执行一定数量的上述操作?(在这种情况下我怎么知道有多少?)或者这是否也取决于用于该表的引擎?基本上,我想更好地了解