草庐IT

Indexing

全部标签

mysql - 使用只读副本提升在 AWS RDS MySQL 数据库上创建索引

我想在AmazonRDS上的数据库中为MySQL表添加索引,但我不想在创建索引时停止使用数据库。这answer建议使用只读副本提升,首先在只读副本上创建索引,然后提升只读副本。我创建了一个只读副本来尝试这种方法,但是当我尝试更改只读副本上的索引时,我得到了ERROR1290(HY000):TheMySQLserverisrunningwiththe--read-onlyoptionsoitcannotexecute这个声明。我该怎么做才能编辑只读副本,这会阻止Amazon继续更新只读副本以匹配主数据库吗? 最佳答案 默认情况下,只读

mysql - 对 UUID 主键使用字符串类型与 uuid 类型相比,对性能有何影响?

使用string进行索引查找是否有很大的速度差异?对于主键与实际uuid类型,特别是如果字符串有像user-94a942de-05d3-481c-9e0c-da319eb69206这样的前缀(使查找必须遍历5-6个字符才能找到唯一的东西)? 最佳答案 这是一个微优化,在您达到巨大规模之前不太可能导致真正的性能问题。使用最适合您的设计的key。也就是说,这是详细信息...UUIDisabuiltinPostgreSQLtype.它基本上是一个128位整数。它应该像任何其他大整数一样作为索引执行。Postgres没有内置的UUID生成函

mysql - 如何检查启用/禁用键是否有效?

我有一个包含索引varchar(256)列的表。为了更快地批量插入,我禁用了键,插入超过1000万个条目,然后在插入完成后重新启用键。令人惊讶的是,启用/禁用键没花时间:mysql>altertablexxxdisablekeys;QueryOK,0rowsaffected,1warning(0.00sec)mysql>altertablexxxenablekeys;QueryOK,0rowsaffected,1warning(0.00sec)如何确保启用/禁用键正常工作? 最佳答案 要检查您的key是否启用/禁用,请运行:show

mysql - 偏移量为 ("LIMIT 500000, 10"的限制)即使在索引之后也很慢?

我有一个包含int字段的表,我们称它为createTime。该表由几百万条记录组成。现在我想运行查询:select*from`table`orderby`createTime`desclimit500000,10我已经为createTime创建了一个索引,但是查询运行得非常慢。什么原因?我该如何改进它?EXPLAIN的内容如下:id1select_typesimpletabletabletypeindexpossible_keysnullkeycreateTimekey_len4refnullrows500010extra至于偏移量,它在较小时工作得更快。

MySQL:你能指定起始索引吗?

在MySQL中是否可以设置主键索引的起始值,例如从15而不是1开始?一个快速的破解方法是编写一个包含14个垃圾条目的循环,添加正确的数据然后删除前14个条目,但我很想知道是否有可能以更简洁的方式实现!这样做的原因是对现有站点的彻底改造,该站点的索引并非全部从1开始,而是用于链接不同表中的项目 最佳答案 是的,可以通过更改表格来更改自动递增的起始位置。ALTERTABLEtAUTO_INCREMENT=?; 关于MySQL:你能指定起始索引吗?,我们在StackOverflow上找到一个类

mysql - 我有一个要优化的 SQL 查询。让我们来谈谈它

所以,这里有一个问题可能会让SQL专家跳来跳去,说我懒惰,但我被难住了。今天早上我们的在线商店崩溃并被烧毁,这是可疑的查询。我想了一整天,并没有想出任何天才的优化。我能得到一些帮助吗?有什么关键指标?重组这个的方法?我意识到这就像问墙的另一边是什么,然后给你一个指向另一个方向的望远镜,但我认为值得一试:SELECTDISTINCT(SELECTfilenameFROM(SELECTDISTINCTy.valueASlabel,x.valueASfilenameFROM`catalog_product_super_link`ASzINNERJOIN`catalog_product_ent

mysql - 如何查看我在 MySQL 中设置的索引?

我在表entries上设置了一些索引,我想查看它们/列出它们。有办法吗? 最佳答案 showindexfromentries;详情:http://dev.mysql.com/doc/refman/5.0/en/show-index.html另一种方法是使用information_schema.STATISTICSSELECT*FROMinformation_schema.STATISTICSWHERETABLE_SCHEMA='{$db}'ANDTABLE_NAME='entries';

mysql - 编辑-MySQL。大型 MyISAM 表(4000 万条记录)的索引速度非常慢且磁盘上的大小很大

该表包含大约40,000,000条记录:CREATETABLE`event`(`id`bigint(20)unsignedNOTNULLauto_increment,`some_other_id_not_fk`int(10)unsigneddefaultNOTNULL,`event_time`datetimeNOTNULL,`radius`floatdefaultNULL,`how_heavy`smallint(6)defaultNULL,PRIMARYKEY(`id`),KEY`event_some_other_id_not_fk`(`some_other_id_not_fk`),K

mysql - ORDER BY ... ASC 很慢, "Using index condition"

我有2个表:user和post。使用showcreatetable语句:CREATETABLE`user`(`user_id`bigint(20)NOTNULLAUTO_INCREMENT,`user_name`varchar(20)CHARACTERSETlatin1NOTNULL,`create_date`datetimeDEFAULTCURRENT_TIMESTAMP,PRIMARYKEY(`user_id`))ENGINE=InnoDBAUTO_INCREMENT=59DEFAULTCHARSET=utf8;CREATETABLE`post`(`post_id`int(10)u

python - 假设我在数据库中有 400 行人名。搜索他们姓名的最佳方式是什么?

他们还会搜索他们名字的一部分。不仅是带空格的单词。如果他们输入“Matt”,我希望也能检索到“Matthew”。 最佳答案 SELECT*FROMmytableWHEREnameLIKE'matt%'ORnameLIKE'[,-/]matt%'注意事项:1)花哨的通配符。不使用更简单的LIKE'%xyz%'形式的原因是,根据xyz,数据库可能返回许多不相关的记录。例如,搜索“Matt”时显示“JeffZermatt”。第二个通配符键中的括号包括所有可以指示单词之间的分隔符的定界符。另一种通配符模式是[^A-Z0-9](当搜索bria