草庐IT

index-recommend

全部标签

MySQL 没有在子查询中使用 INDEX

我有在sqlfiddle中定义的这些表和查询.首先,我的问题是将显示LEFTJOINed访问行的人员分组到最新年份。我使用子查询解决了。现在我的问题是该子查询没有使用visits表上定义的INDEX。这导致我的查询在每个大约有15000行的表上几乎无限期地运行。这是查询。目标是在访问表中列出每个人的最新(按年)记录一次。不幸的是,在大表上它变得非常慢,因为它没有在子查询中使用INDEX。SELECT*FROMpeopleLEFTJOIN(SELECT*FROMvisitsORDERBYvisits.yearDESC)ASvisitsONpeople.id=visits.id_peopl

java - MySQL更改为utf8mb4后,Error Unknown character set index for field '224' received from server

我已经将我们的服务器MySQL数据库更改为使用utf8mb4,因为我们需要支持表情符号。我已按照基于HowtosupportfullUnicodeinMySQLdatabases的说明进行操作MathiasBynens的文章。唯一的区别是我没有从utf8更改。配置如下:[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[mysqld]character-set-client-handshake=FALSEinit-connect='SETNAMESutf8mb4'character-set-

mysql - 带有多个定界符的 SUBSTRING_INDEX

我正在尝试从放入我的数据库的URL中删除一些信息。我有我正在使用的查询:Selectsubstring_index(refurl,'?gclid',1)asrefurl,Count(*)fromleadsgroupbysubstring_index(refurl,'?gclid',1)但是对于分隔符,我真的需要去掉这两个:?gclidor&gclid这是否可以通过在子字符串中执行OR语句来实现,还是完全不同的方式来完成? 最佳答案 使用IFSELECTSUBSTRING_INDEX(refurl,IF(LOCATE('?gclid'

mysql - 为什么存在唯一索引时MySQL Innodb "Creating sort index"?

在一个简单但非常大的Innodb表上,我在A列上有一个唯一索引,我想按照(整数)列A的顺序获取(整数)列B的列表非常简单的查询,我正在分页数百万条记录。SELECTBFROMhugeTableORDERBYALIMIT10000OFFSET500000在非常快的服务器上每次查询需要10秒?文件排序:是Filesort_on_disk:是Merge_passes:9这对我来说毫无意义,为什么它不能使用IndexA?Explain显示简单,没有可能的键和文件排序。 最佳答案 如果B列的值在索引页中不可用,则MySQL将需要访问基础表中的

MySQL "Incorrect index name..."错误(唯一外键)

我在使用MySQL时不断收到错误“Incorrectindexname'f7'”,我已将其缩小为以下错误:首先我创建表,CREATETABLEtestTable(idINTEGERPRIMARYKEYAUTO_INCREMENT,f7INTEGERNOTNULL,FOREIGNKEY(f7)REFERENCEStestTable2(id)ONDELETECASCADEONUPDATECASCADE,)ENGINE=InnoDB;然后在其他地方,ALTERTABLEtestTableADDUNIQUEf7;This让我相信这与重复索引有关(?)我只是不知道如何解决它。非常感谢。

具有一个多字段键的 MySQL 索引 : Having multiple indexes vs.?

当我在MySQL中手动创建表时,我会为我认为将用于查询的每个字段一次添加一个索引。当我使用phpMyAdmin为我创建表并以创建表形式选择索引时,我看到phpMyAdmin将我的索引合并为1(加上我的主索引)。有什么区别?这个比那个好吗?在什么情况下?谢谢! 最佳答案 这两个都不是特别好的策略,但如果我必须选择,我会选择多个单一索引。原因是只有使用索引的任何完整前缀中的所有字段,才能使用索引。如果您有一个索引(a,b,c,d,e,f)那么这对于过滤a的查询或同时过滤a的查询都可以正常工作>和b,但对于仅在c上的查询过滤将无用。没有简

MySQL : loop over tables and alter table add index

我有大约1000个以相同前缀开头的表:table_prefix_{SOME_ID}(我可以从另一个表中获取ID)遍历所有mysql中的表并执行以下操作的快速方法是什么:ALTERTABLE`table_prefix_{some_id}`ADDINDEX`fields`(`field`) 最佳答案 忘记循环。只需这样做:selectconcat('altertable',a.table_name,'addindex`fields`(`field`);')frominformation_schema.tablesawherea.tabl

MySQL & 嵌套集 : slow JOIN (not using index)

我有两个表:地区:CREATETABLE`localities`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(100)NOTNULL,`type`varchar(30)NOTNULL,`parent_id`int(11)DEFAULTNULL,`lft`int(11)DEFAULTNULL,`rgt`int(11)DEFAULTNULL,PRIMARYKEY(`id`),KEY`index_localities_on_parent_id_and_type`(`parent_id`,`type`),KEY`index_localities

MySQL 工作台 |错误 : Error 1280: Incorrect index name

我在使用InnoDB表的数据库中使用外键时遇到了一些问题。我正在使用MySQLWorkbench设计我的ER模型,并有一个ZendServer(OSX)用于使用MySQL5.1.54进行开发。一切正常,没有任何错误。将此数据库部署到我的实时服务器时失败。它是带有MySQL5.1.58-1~dotdeb.1-log的Debian安装。我不明白为什么这两个系统的工作方式如此不同。ERROR:Error1280:Incorrectindexname'fk_accounts_countries_idcountry'DROPTABLEIFEXISTS`countries`;SHOWWARNING

java.sql.SQLException : Column Index out of range, 0 < 1

我想显示数据库中的所有图像。我已经编写了代码,但显示错误java.sql.SQLException:ColumnIndexoutofrange,0|application_name|varchar(45)||application_id|varchar(10)||application_path|varchar(500)||application_icon|blob|我只想显示图片。下面是我的servlet代码图标下载.javaprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsS