草庐IT

Indexing

全部标签

mysql - 有索引的查询比没有索引慢

我使用的是MySQL5.6,我的存储引擎是InnoDB。我有一个包含100万行的表,其中包含以下列:ID(主键)名字姓氏foreign_key_id(外键,非空)foreign_key_id2(另一个外键,默认为NULL)行在下面分隔:25%foreign_key_id值为1且foreign_key_id2NULL25%foreign_key_id值为1且foreign_key_id2NOTNULL25%foreign_key_id值为2且foreign_key_id2NULL25%foreign_key_id值为2且foreign_key_id2NOTNULL具有以下指标:在fore

mysql - 在 MySQL 中索引 VARCHAR

与INT字段相比,VARCHAR字段的索引性能相同还是更差?我有一个包含两个字段的表(都是VARCHAR)。我想在第一列上创建一个索引。我心里有两件事。1.直接在第一个字段上创建索引。2.为第一个字段中的每个VARCHAR分配一个整数,并将它们存储在一个表中。然后用整数替换第一列中的VARCHAR,并在第一列上创建另一个表和索引(在这种情况下它将是整数列)。我将在这里得到两个不同的表。此外,如果我有4或5个表的第一个字段相同,并且必须在每个表的第一个字段上创建索引,第二种方法会提供更好的性能吗?提前致谢。 最佳答案 VARCHAR(

sql - 为子字符串查询优化 Mysql 表索引

我有一个MySQL索引问题要问你们。我在MySQL中有一个非常大的表(约1亿条记录),其中包含有关文件的信息。我对它执行的大多数查询都涉及文件路径列上的子字符串操作。这是表ddl:CREATETABLE`filesystem_data`.`$tablename`(`file_id`INT(14)NOTNULLAUTO_INCREMENTPRIMARYKEY,`file_name`VARCHAR(256)NOTNULL,`file_share_name`VARCHAR(100)NOTNULL,`file_path`VARCHAR(900)NOTNULL,`file_size`BIGINT

sql - 创建一个没有聚集索引的mysql主键?

我是一名SQLServer人员,正在为一个即将到来的大型项目(由于许可)试验MySQL,但我没有找到太多关于在没有聚簇索引的情况下创建主键的信息。我读过的所有关于5.1的文档都说主键自动被赋予聚集索引。由于我将binary(16)用于主键列(GUID),因此我不想在其上使用聚集索引。所以……是否可以在没有聚集索引的情况下创建主键?我总是可以将聚簇索引放在date_created列上,但是如何防止mysql自动在主键上创建聚簇索引?如果不可能,我可以在GUID列上使用唯一索引并且在表上没有主键来提高性能吗?我打算在这里使用nhibernate,所以我不确定是否允许没有主键(还没有那么远)

mysql - 何时在连接表上添加索引

我有一个mysql表,其中包含900万条记录,但没有设置任何索引。我需要根据公共(public)ID将其连接到另一个表。我要为这个ID添加索引,但我在select和where子句中还有其他字段。我应该为where子句中的所有字段添加索引吗?select子句中的字段呢?我应该为所有字段创建一个索引,还是为每个字段创建一个索引?更新-添加表和查询这是查询-我需要根据商店名称和商店ID(商店名称和ID本身不是唯一的)按项目获取销售数量、商品名称和商品IDSELECTCOUNT(*)assalescount,items.itemName,CONCAT(items.ID,items.produc

mysql - 具有 3 个字段的索引是否适用于 2 个字段查询?

我正在考虑在表上应用3个字段(类型、状态、user_id)的索引。我的大多数查询都有使用所有3个字段的WHERE。但是,我有几个使用频繁的查询只使用2个字段(类型和状态)。我的问题是,创建包含所有3个字段的索引是否会被仅真正比较2个字段的查询有效使用?或者有2个索引会更好,一个有3个字段,一个有2个字段? 最佳答案 我比MySQL更了解Oracle,但我想在这种情况下是一样的。索引通常是一个B-Tree,这意味着如果索引是(type,status,user_id)数据库通常仍然可以使用它来搜索(type,status)因为它是组合索

mysql - MySQL 中的索引 - 101 简介?

我从事过创建表和键等基本工作。没有使用索引的经验。所以问题是:我需要手动创建任何索引还是MySQL会为我创建的所有表自动创建它?如果我需要创建它们是否意味着任何具有PK和FK的列都需要索引,或者此业务逻辑是否与哪些列需要索引而哪些不需要索引有关。 最佳答案 您需要自己创建它们。PK实际上是索引本身,因此不需要对这些列进行双重索引。而且FK只能针对索引列实现...至于何时以及为何实现索引,我建议阅读以下内容:TheofficialdocumentationMySQLPerformanceBlogAsitepointindex有一点要注

mysql类别树搜索

我在MySQL5.1上有以下架构CREATETABLE`mytest`(`category`varchar(32),`item_name`varchar(255)KEY`key1`(`category`))ENGINE=MyISAMDEFAULTCHARSET=latin1;类别栏是这样填的[:parent_parent_cat_id][:parent_cat_id][:leaf_cat_id]10000200003000如果您可以搜索以下所有类别:parent_parent_category_idSELECT*FROMmytestWHEREcategoryLIKE"10000%";它

mysql - 多列数据库索引和查询速度

我正在部署一个Rails应用程序,它将来自各种第三方提供商的优惠券数据聚合到一个可搜索的数据库中。针对每张优惠券在四个字段中进行搜索:标题、优惠券代码、说明和到期日期。因为其中一些第三方提供商在保持数据排序方面做得相当糟糕,而且因为我不想让重复的优惠券潜入我的数据库,所以我在这四个列中实现了一个唯一的复合索引。这可以防止同一张优惠券被多次插入我的数据库。鉴于我正在搜索这些列(暂时通过简单的WHEREcolumnLIKE%whatever%匹配),我希望这些列分别从速度提升中受益通过索引它们。所以这是我的问题:所有列的复合索引是否会提供与我对每个列应用单独索引一样的搜索速度提升?还是只保

mysql - SOLR 数据导入错误 "Unable to Execute Query"

我有一个在AmazonEC2实例上运行的网站,我正在尝试让Solr与我正在使用的数据库进行交互和使用。我能够使用管理界面并已将示例xml文件编入索引,但每当我尝试导入我的数据库表之一时,我都会收到错误SEVERE:Exceptionwhileprocessing:gamelydbdocument:SolrInputDocument[{}]:org.apache.solr.handler.dataimport.DataImportHandlerException:Unabletoexecutequery:SELECT*FROMleagueProcessingDocument#1这是我的d