在MySQL Workbench内未存储的脚本中通过varchar变量查询不使用索引?

时间:2019-02-05 12:34:07

标签: mysql mysql-workbench

我有一个带有VARCHAR(20)作为非唯一索引的表。如果我用SET @varname = "XYZ"为它声明一个变量,则不使用索引。

我尝试将""更改为'', 我试图在SET语句中将=更改为:=, 我尝试使用=LIKE进行查询。

CREATE TABLE `table_name` (
  `ColumnID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `Time` DATETIME NOT NULL,
  `indexed_varchar_field ` VARCHAR(20) DEFAULT NULL,  
  UNIQUE KEY `ColumnID` (`ColumnID`),
  KEY `idx_varchar_field` (`indexed_varchar_field `)
) ENGINE=InnoDB AUTO_INCREMENT=20268516 DEFAULT CHARSET=utf8;

SET @VAR_NAME = 'XYZ';
SELECT * FROM table_name WHERE indexed_varchar_field = @VAR_NAME;

实际表中有更多列,indexed_varchar_field是一个序列号,我希望拥有该计算机的所有数据集。如果没有索引,则需要花费一分钟以上的时间;使用索引,则需要不到一秒钟的时间。

如果我尝试不使用变量,它将使用索引并且速度很快。

0 个答案:

没有答案