我对一个有66k行的表有一个简单的查询,并且不使用索引。
查询:
select * from products p where p.upc = '771313251785'MySQL版本:8
以下是create表:
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

发布于 2021-06-05 23:20:43
SHOW CREATE TABLE的输出解释了您的问题。该索引被宣布为不可见。请在:MySQL 8.0文档:不可见索引上阅读关于它们的说明:
MySQL支持不可见的索引;也就是说,优化器不使用的索引。..。
ALTER TABLE produits ALTER INDEX ix_upc VISIBLE ;应该使索引再次可见,并由优化器使用。
虽然不允许,但通常在同一列中同时使用FULLTEXT和INDEX索引是不合适的。
https://dba.stackexchange.com/questions/293823
复制相似问题