草庐IT

Indexing

全部标签

mysql - 在 mysql 中的表上的多个索引之间的适当索引选择没有发生

我有一个带有散列索引的MySql表,就像这样CREATETABLE`forecast_item_store`(`product_key`int(11)DEFAULTNULL,`parent_id`int(11)DEFAULTNULL,`store_key`int(11)DEFAULTNULL,`collection`varchar(45)DEFAULTNULL,`category_key`int(11)DEFAULTNULL,`flag`int(5)DEFAULTNULL,`directly`tinyint(1)DEFAULT'1',KEY`product_key_fr_idx`(`p

mysql - Mysql存储函数和groupwise min

图式简化了数据库架构事件表此表存储事件。CREATETABLE`Events`(`event_id`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`isPublic`tinyint(1)NOTNULLDEFAULT'1',PRIMARYKEY(`event_id`))ENGINE=InnoDBDEFAULTCHARSET=latin1;位置表存储位置的简单表。一个事件可以位于多个位置。CREATETABLE`Places`(`place_id`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`latitude`doubl

mysql - 如何让一个mysql查询使用特定的索引?

SELECT*FROMordersWITH(INDEX(idx));当我触发上面的查询时,我得到了错误mysql#1064-YouhaveanerrorinyourSQLsyntax我创建了如下索引createindexidxonorders(date,status);谁能告诉我正确的语法? 最佳答案 如果索引合适,将在不明确指定的情况下使用它。鉴于您正在使用SELECT*我不希望使用您的索引(即使INDEX提示具有正确的语法)。选择取决于查询优化器的启发式方法。正确的语法是:SELECT*FROMordersUSEINDEX(id

mysql索引 'and'总是选择第一个创建的索引?

https://dev.mysql.com/doc/internals/en/optimizer-and-relations.html文章说,如果两个条件都被索引并且具有相同的连接类型,则它使用首先创建的索引。如果一个索引具有更高的基数,那么选择该索引作为驱动因素不是更好吗?它不应该查询存储引擎吗?如果我不了解基数,我是否应该在这些情况下强制索引? 最佳答案 我想知道这个文档是否已经过时了。毕竟,描述似乎使analyzetable的用处大大减少。那就是documented作为:MySQLusesthestoredkeydistrib

mysql - 如何针对常量值优化 SELECT?

因为我正在使用我无法控制的数据结构,所以我的数据库中有一个表可能有数百万个Foreign-key=>(key=>value)对。现在,我知道其中一个键将是某个值(在本例中键是related_content)。MySQL是否可以优化查询,使其不必搜索整个表来获取结果?示例表(称为meta):fk|key|value====================================1|'related_content'|'[2,3,4]'1|'condiment'|'mayo'1|'condiment'|'bananas'29|'condiment'|'ketchup'29|'rel

mysql - 为 MySQL 配置更好的索引选择

我有一个包含约1700万行的MySQL表,我最终在其中执行了大量聚合查询。对于这个例子,假设我有index_on_b、index_on_c、compound_index_on_a_b、compound_index_on_a_c我尝试运行查询解释EXPLAINSELECTSUM(revenue)FROMtableWHEREa=some_valueANDb=other_value而且我发现选择的索引是index_on_b,但是当我使用查询提示时SELECTSUM(revenue)FROMtableUSEINDEX(compound_index_on_a_b)查询运行得更快。我可以在MySQ

mysql - 为什么 MySQL 在运行查询时不使用我的索引?

我正在使用MySQL5.5.37。目前无法升级。我有这张tableCREATETABLE`my_classroom`(`ID`varchar(32)COLLATEutf8_binNOTNULLDEFAULT'',`CLASSROOM_NAME`varchar(100)COLLATEutf8_binNOTNULL,`ACCESS_CODE_ID`varchar(32)COLLATEutf8_binDEFAULTNULL,`TEACHER_ACCESS_CODE_ID`varchar(32)COLLATEutf8_binDEFAULTNULL,PRIMARYKEY(`ID`),UNIQUE

mysql - 当天查询的日期时间列的最佳索引

我有下表,其中大约有4亿行。我必须对该表执行SELECT查询,通常涉及Date_create列上的WHERE子句。关键是大部分我的查询都是全天(不考虑小时和秒)+----------------+--------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+----------------+--------------+------+-----+---------+-------+|ID_num|bigint(45)|NO|PRI|NULL|||Content|varchar(250)

mysql - 在 MySQL 中删除用于外键的索引的后果

似乎可以删除为MySQL5.5中的外键创建的索引,使用一个小“技巧”​​,如下所示:mysql>createtablecommands(idintprimarykeyauto_increment,namevarchar(255));mysql>createtabledata(dim_commandint,cntintNOTNULL,CONSTRAINTFOREIGNKEY(dim_command)referencescommands(id));现在创建了一个索引,不能删除:mysql>showcreatetabledata;+-------+----------------------

具有唯一子集的 MySQL 复合索引

我有以下一对一链接表CREATETABLE`foo_bar`(`id`int(10)unsignedNOTNULLAUTO_INCREMENTPRIMARYKEY,`foo_id`int(10)unsignedNOTNULL,`bar_id`int(10)unsignedNOTNULL,…PRIMARYKEY(`id`),…)ENGINE=InnoDB其中foo_id和bar_id分别是表foo和bar的外键还有(foo_id,bar_id)上的唯一索引,用于将foo_id映射到foo记录的外键,以及查询性能,和...bar_id上的唯一索引,用于从bar_id到bar记录的外键映射注