草庐IT

Indexing

全部标签

sql - 如何在分区的 MySQL 数据库中的字段上添加唯一索引?

我有一个表foo,它按“created_at”分区,主键为(id,created_at)。即:CREATETABLE`foo`(`id`int(11)NOTNULLAUTO_INCREMENT,`created_at`datetimeNOTNULLDEFAULT'0000-00-0000:00:00',`bar_id`int(11)DEFAULTNULL,...)ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8/*!50100PARTITIONBYRANGE(TO_DAYS(created_at))(PARTITIONp0VALUESLE

mysql - 使用索引优化mysql查询

我对这个查询有疑问:SELECTDISTINCTs.city,pc.start,pc.endFROMpostal_codespcLEFTJOINsuspectssON(s.postalcodeBETWEENpc.startANDpc.end)WHEREpc.user_id="username"ORDERBYpc.start可疑表有大约340000个条目,在邮政编码上有一个索引,我有几个用户,但是这个单独的查询大约需要0.5秒,当我用解释运行这个SQL时,我得到这样的东西:http://my.jetscreenshot.com/7536/20111225-myhj-41kb.jpg-这些

MySQL 文本索引只检查 256 个字符?

MySQL在文本列上的UNI键似乎只查看前255个字符来测试唯一性。如果我有两个以相同的255个字符开头的字符串,则不能将它们都添加到此表中。有没有办法克服这个问题?我键入此字段的原因是为了确保唯一性,而不考虑查询(那些不在我的控制之下),而不是为了性能。 最佳答案 您不能在MySQL中索引键长度超过255symbolsbeforeMySQL4.1.2的文本字段/1000bytes(767forInnoDB)forhigherversions-你无法天生克服它。最简单的解决方案是评估md5哈希并将其存储在另一列中,然后通过它创建唯一

mysql - SQL查询没有正确使用索引

我的一个SQL查询有问题。这是我的查询:explainSELECTDISTINCTprofiles.hoofdrubriek,profiles.plaats,profiles.bedrijfsnaam,profiles.gemeente,profiles.bedrijfsslogan,profiles.straatnaam,profiles.huisnummer,profiles.postcode,profiles.telefoonnummer,profiles.fax,profiles.email,profiles.website,profiles.bedrijfslogoFROMp

MySQL - 非常简单的加入花费的时间太长

这是我在stackoverflow中的第一个问题,我很高兴成为这个社区的一员,因为它帮助了我很多次。我不是SQL和MySQL方面的专家,但我正在从事一个需要大表(百万行)的项目。我在进行连接时遇到问题,我不明白为什么要花这么长时间。提前致谢:)这是表格:CREATETABLEIFNOTEXISTStabla_maestra(idintUNIQUE,codigo_altachar(1),nombrevarchar(100),empresa_apellido1varchar(150),apellido2varchar(50),tipo_viavarchar(20),nombre_viava

mysql left join where with an or,扫描整个表(无索引)

我尝试了几种不同的方法,但结果很糟糕。核心问题是成员搜索正在扫描所有成员,忽略索引。主要原因(据我所知)是这个片段(Member.priv_profile=3ORMyFriend.status_idIN(1,2))单独使用该OR片段的任一侧都可以正常工作,获取索引,扫描几行,因此性能良好。我真的不想将此查询拆分为2并执行UNION,但我们可能不得不这样做,除非有人能想出一个好方法使此选择与重要的OR一起“工作”。mysql>ALTERTABLE`members`ADDINDEXA(is_active,last_name,first_name);QueryOK,140019rowsaff

MySQL:为什么 IN 子句中的第 5 个 ID 会彻底改变查询计划?

给定以下两个查询:查询#1SELECTlog.idFROMlogWHEREuser_idIN(188858,188886,189854,203623,204072)andtypein(14,15,17)ORDERBYlog.idDESCLIMIT25OFFSET0;查询#2-4个ID而不是5个SELECTlog.idFROMlogWHEREuser_idIN(188858,188886,189854,203623)andtypein(14,15,17)ORDERBYlog.idDESCLIMIT25OFFSET0;解释计划--Query#11SIMPLElograngeidx_user

mysql - MySQL 是如何存储索引的?

只是一个问题。在我的网站上变得非常慢。30k行的加载时间超过30秒。我必须说查询没有优化,所以可以触发10k查询,但我发现这花费的时间太长了……所以我想,让我们检查一下索引。在查看了一些“问题”表后,我发现我对多列进行了索引,但基数仅显示在1列上,而其他索引的基数为0。我做错索引了吗?换句话说,我应该为每一列做一个索引而不是合并它们吗? 最佳答案 几乎可以肯定是您创建了错误的索引。大多数人都这样做!:-)在多列和单个列上创建索引没有规则。要创建的最佳索引取决于您运行的查询,而不是您的数据库架构。分析查询和确定索引是一个细致的过程。您

mysql - 为什么这个简单的 MySQL 查询这么慢?

所以这是一个非常简单的表“tbl”:+---------+---------------------+------+-----+---------+----------------+|Field|Type|Null|Key|Default|Extra|+---------+---------------------+------+-----+---------+----------------+|val|varchar(45)|YES|MUL|NULL|||id|bigint(20)unsigned|NO|PRI|NULL|auto_increment|+---------+-----

mysql - 用于查找与一组类别匹配的产品的 SQL 查询

我有3个表:产品、类别和pro_cat_link。一个产品可以通过表pro_cat_link链接到一个或多个类别。我的查询必须回答以下问题:找到与一组类别匹配的所有产品。例如:找到所有“黄色、水果和甜味”的产品。在SO中研究这个问题时,我只能找到我当前使用的解决方案:ComplicatedSQLQuery--findingitemsmatchingmultipledifferentforeignkeys就我而言,我的查询如下所示:SELECTproducts.id,COUNT(DISTINCTcategories.id)ascountCatFROMproductsINNERJOINpr