一个有 78 万数据的 mysql 表,创建索引 2 个小时了,还是未完成创建,是哪里不正常吗?

2020-04-08 19:31:01 +08:00
 css3

productName 列创建索引,创建前这个表已经有 78 万条数据

mysql> select count(id) from products;
+-----------+
| count(id) |
+-----------+
|    780097 |
+-----------+

| products | CREATE TABLE `products` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `productCode` text NOT NULL COMMENT '产品代码',
  `productName` text NOT NULL COMMENT '产品名称',
  `productLine` text NOT NULL COMMENT '产品线',
  `productScale` text NOT NULL,
  `productVendor` text NOT NULL,
  `productDescription` text NOT NULL,
  `quantityInStock` smallint(6) NOT NULL COMMENT '库存',
  `buyPrice` decimal(10,2) NOT NULL COMMENT '价格',
  `MSRP` decimal(10,2) NOT NULL COMMENT '建议零售价',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=760001 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC |

创建索引命令(卡这 2 个多小时了😱,这是在创建中还是已经凉了??):

mysql> create index product_index on products (productName(64));


7610 次点击
所在节点    MySQL
44 条回复
qiayue
2020-04-08 19:38:28 +08:00
productName 是 text 类型?大部分几个字符?
另外产品名称建所以没多大意义吧?
jugelizi
2020-04-08 19:38:38 +08:00
稳妥的方案是新建临时表带索引 导入数据再覆盖原始的
xcstream
2020-04-08 19:42:30 +08:00
text 类型 有点大
privil
2020-04-08 19:44:54 +08:00
再开一个连接看看执行状态啊
css3
2020-04-08 19:46:21 +08:00
@qiayue 10240 个字符😥,很长,编译器都卡顿
version
2020-04-08 19:47:52 +08:00
productName 索引不能用 text 呢.
而且用 VARCHAR 建立索引 200 字符长度以上都直接报错呢
VARCHAR(30) 以内都很大了.
而且字符串做索引.本来性能就不算好.
yjxjn
2020-04-08 19:48:31 +08:00
@qiayue code 为啥也是 text 类型???不是 number 么
Egfly
2020-04-08 19:51:29 +08:00
这索引没啥意义吧。不如上 es
xuanbg
2020-04-08 19:53:06 +08:00
text 类型的字段不适合直接做索引。。。一般这种内容我都用 es 做索引,查到 id 后再读数据库。
yangbin9317
2020-04-08 19:53:57 +08:00
因为 Innodb 的没有确定的哈希索引,只有自适应哈希索引,我觉得可以建一个字段叫 hash 里面存 text 的 hash,然后在 hash 上建索引(因为 hash 比较短)查询的时候先判断 hash,hash 一样再判断 text 。
qiayue
2020-04-08 19:58:55 +08:00
10240 个字符
这么长建索引干嘛?你想做搜索?
不是这样干的
glacer
2020-04-08 19:59:57 +08:00
show processlist 看下是不是链接状态是 waiting for metalock
sjzzz
2020-04-08 20:23:11 +08:00
.....为什么全是 text 。这表设计的很有问题啊
jay4497
2020-04-08 20:49:43 +08:00
不知道你磁盘空间有没有剩余有 50%+,如果没有的话,有可能是空间不足的问题。。。
wangyzj
2020-04-08 21:28:48 +08:00
全是 text
text 做索引。。。。咋想的
kiracyan
2020-04-08 21:32:23 +08:00
这数据库设计的也是绝了
mumbler
2020-04-08 21:34:26 +08:00
啥产品啊,名称要用 text
ArJun
2020-04-08 21:35:21 +08:00
索引千万条,但是绝不能用 text 做索引
ytmsdy
2020-04-08 21:36:43 +08:00
大哥你 productDescription 用 text 类型表示理解,但是为什么 productCode,productName,productLine 也用 text ?
metrxqin
2020-04-08 23:21:21 +08:00
竟然用 MYISAM 引擎,你怎么保证库存数据一致性的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/660565

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX