草庐IT

Indexing

全部标签

mysql - 检查列是否被索引 - MySql

我需要写一个脚本来检查一个列是否在它所属的表中被索引,如果没有则为它添加一个索引。MySQL似乎没有ADDINDEXIFNOTEXISTS。在MySQL中执行此操作的最佳方法是什么? 最佳答案 参见http://dev.mysql.com/doc/refman/5.1/en/create-index.html有一个存储过程可以执行此操作(记住,不是我的代码,只是第一次使用mysqladdindexifnotexists作为搜索字符串搜索google。DELIMITER$$DROPPROCEDUREIFEXISTS`create_in

mysql - 如何创建带重音的 Mysql 唯一不区分大小写的索引 - (或使用 NO 排序规则)

我正在与排序规则作斗争。我想在不区分大小写但区分“a”和“à”的单词上建立一个具有唯一索引的表。这意味着“de”和“dé”应该是2个不同的条目,但de、De、DE、dE应该是相同的。是否有一个utf8排序规则可以完成这项工作(似乎不是这样)?有没有办法告诉mysql不要使用任何排序规则?还有其他解决方案吗?我不想把我的话改成小写或大写谢谢 最佳答案 Isthereanutf8collationthatdothejob(itdoesnotseemstobethecase)?MySQL附带的排序规则都不会这样做:utf8_*_ci排序规

MySQL 在索引 TIMESTAMP 列上使用文件排序

我有一个表拒绝使用索引,它总是使用文件排序。表格是:CREATETABLE`article`(`ID`int(11)NOTNULLAUTO_INCREMENT,`Category_ID`int(11)DEFAULTNULL,`Subcategory`int(11)DEFAULTNULL,`CTimestamp`timestampNOTNULLDEFAULTCURRENT_TIMESTAMP,`Publish`tinyint(4)DEFAULTNULL,`Administrator_ID`int(11)DEFAULTNULL,`Position`tinyint(4)DEFAULT'0',

Mysql 复合索引与 tenant_id

我们有一个Multi-Tenancy应用程序,它有一个包含129个字段的表,这些字段都可以在WHERE和ORDERBY子句中使用。我花了5天时间试图找出最适合我们的索引策略,我获得了很多知识,但我仍然有一些问题。1)在创建索引时,我是否应该始终首先将其设为包含tenant_id的复合索引?(所有查询都在WHERE子句中包含tenant_id=?)2)由于所有列都可以在WHERE子句和orderby子句中使用,我是否应该为它们创建一个索引?(正确知道当我按没有索引的列排序时,需要6秒才能与具有大约1,500,000行的租户一起执行)3)创建PK(tenant_id,ID),但这不会影响到

MySQL 索引大表的性能

长话短说:我有一个关于2个大表的查询。它们不是索引。它很慢。因此,我建立索引。它比较慢。为什么这是有道理的?怎样才是正确的优化方式?背景:我有两张tableperson,一个包含人信息的表(id,birthdate)works_in,person和部门之间的0-N关系;works_in包含id,person_id,department_id。它们是InnoDB表,遗憾的是不能切换到MyISAM,因为数据完整性是一项要求。这2个表很大,除了它们各自的id上的PRIMARY之外不包含任何索引。我正在尝试获取每个部门中最年轻的人的年龄,这是我提出的查询SELECTMAX(YEAR(perso

mysql - 当字段值不明确时如何优化 MySQL 查询

假设我有一个MySQL表,其中有一个名为balance的索引字段。但是,该表包含95%的行的余额=0。所以如果我要走:Select*frommytablewherebalance>0.02如果表有超过100万行,查询将花费很长时间,因为BTree索引没有一组不同的余额值。在这种情况下,不改变数据,如何优化SQL查询 最佳答案 首先,您的查询可能会返回很多行。这需要时间。如果只需要几个,可以加上limit:Select*frommytablewherebalance>0.02limit100;其次,如果您有任何特别大的列,那么这些列可

mysql - 索引创建可以使用已有的索引吗?

我在A、B和C列上有单独的索引。我想在A+B+C三列上创建一个复合索引。我的现有索引对复合索引创建有什么影响?数据库会利用它们吗?它们是否无关紧要,或者它们会减慢我的新复合索引的创建速度?我正在使用MySql5.1。编辑:顺便说一句,该表有几百万行。编辑2:感谢tster的建议:我在一个小得多的表(诚然只有20,000行)上进行了尝试,但即便如此,当个别索引已经存在。 最佳答案 MySQL通常会在您添加索引时重建整个表,因此所有现有的索引也会重建。这可能很慢。唯一的异常(exception)是使用InnoDB插件添加索引,而Inno

MySQL优化

在我的500万条记录的数据库中..表格结构:CREATETABLEIFNOTEXISTS`music`(`id`int(50)NOTNULLauto_increment,`artistname`varchar(50)NOTNULL,`songname`varchar(50)NOTNULL,`duration`varchar(6)NOTNULL,`url`varchar(255)NOTNULL,`server`int(5)NOTNULL,PRIMARYKEY(`id`),KEY`artistname`(`artistname`),KEY`songname`(`songname`),KEY

Mysql索引,我最多可以添加多少?

我有id、member_id、topic_id字段。有时我在WHERE子句中使用id,有时使用member_id,有时使用topic_id。我可以为所有这些添加索引吗?它会让它变慢吗?我是MYSQL优化方面的新手,谢谢。 最佳答案 未使用的索引不会使SELECT变慢,但您添加的每个索引都会减慢INSERT和UPDATE的速度。最大索引数aMyISAM表可以有是64 关于Mysql索引,我最多可以添加多少?,我们在StackOverflow上找到一个类似的问题:

PHP 单词索引,性能和合理的结果

我目前正在为搜索功能开发索引器。索引器将处理来自“字段”的数据。字段看起来像:Field_idField_typeField_nameField_Data-101textNameInteli7-102integerCores4physical,4virtual-103selectVendorIntel-104multitextDescriptionThei7isintel'snextgenrangeofcpus.索引器将生成以下结果/索引:KeywordOccurrences-intel101,103,104-i7101,104-physical102-virtual102-next1