首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不用于简单选择查询mysql的索引

问不用于简单选择查询mysql的索引
EN

Database Administration用户
提问于 2021-06-05 17:57:08
回答 1查看 537关注 0票数 0

我对一个有66k行的表有一个简单的查询,并且不使用索引。

查询:

代码语言:javascript
复制
select * from products p where p.upc = '771313251785'

MySQL版本:8

以下是create表:

代码语言:javascript
复制
CREATE TABLE `produits`
             (
                          \n `pharmacieidbjc` INT NOT NULL,
                          \n `upc`            VARCHAR(14) DEFAULT NULL,
                          \n `sap`            VARCHAR(15) DEFAULT NULL,
                          \n `iditem`         VARCHAR(20) NOT NULL,
                          \n `description`    VARCHAR(100) DEFAULT NULL,
                          \n `fournisseur`    VARCHAR(10) DEFAULT NULL,
                          \n `coutant` DOUBLE DEFAULT NULL,
                          \n `prix` DOUBLE DEFAULT NULL,
                          \n `categorie`       VARCHAR(10) DEFAULT NULL,
                          \n `sousdepartement` VARCHAR(10) DEFAULT NULL,
                          \n `departement`     VARCHAR(10) DEFAULT NULL,
                          \n `marque`          VARCHAR(30) DEFAULT NULL,
                          \n `din`             VARCHAR(8) DEFAULT NULL,
                          \n `crx`             VARCHAR(6) DEFAULT NULL,
                          \n `esttaxablefed`   TINYINT(1) DEFAULT NULL,
                          \n `esttaxableprov`  TINYINT(1) DEFAULT NULL,
                          \n PRIMARY KEY (`pharmacieidbjc`,`iditem`),
                          \n KEY `ix_upc` (`upc`)
                          /*!80000 INVISIBLE */
                          ,
                          \n KEY `ix_sap` (`sap`),
                          \n KEY `ix_din` (`din`),
                          \n KEY `ix_dep` (`departement`),
                          \n KEY `ix_sousdep` (`sousdepartement`),
                          \n KEY `ix_cat` (`categorie`),
                          \n FULLTEXT KEY `ix_upc_full` (`upc`)\n
             )
             engine=innodb DEFAULT charset=utf8
EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-06-05 23:20:43

SHOW CREATE TABLE的输出解释了您的问题。该索引被宣布为不可见。请在:MySQL 8.0文档:不可见索引上阅读关于它们的说明:

MySQL支持不可见的索引;也就是说,优化器不使用的索引。..。

代码语言:javascript
复制
ALTER TABLE produits ALTER INDEX ix_upc VISIBLE ;

应该使索引再次可见,并由优化器使用。

虽然不允许,但通常在同一列中同时使用FULLTEXT和INDEX索引是不合适的。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/293823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档