一个有 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));


7621 次点击
所在节点    MySQL
44 条回复
ragnaroks
2020-04-09 00:19:48 +08:00
槽点太多,就说一个,价格应该使用最低计量单位做缩放,而不是使用"高精度"类型;

10 元 8 角 7 分,正确的存储方式应该是 1087 分,而不是 10.87 元
swulling
2020-04-09 02:36:03 +08:00
这个表结构很惊人,这么多字段里面,我看也就两个字段是设置合理的。
tsui
2020-04-09 06:44:09 +08:00
@ragnaroks “正确的存储方式应该是 1087 分,而不是 10.87 元”
你这是把 Java 里头用 Big Decimal 跟 MySQL 弄混了吧?这个估计是少数这个 schema 没错的地方了。

https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html
The DECIMAL and NUMERIC types store exact numeric data values.
sadfQED2
2020-04-09 08:12:35 +08:00
我看到这个表的心情就是楼主的头像
starcraft
2020-04-09 08:38:14 +08:00
你这个 create 语句实在槽点太多。
SjwNo1
2020-04-09 08:50:16 +08:00
text 太大,可以但没必要
b821025551b
2020-04-09 09:05:15 +08:00
@ragnaroks #21 用 decimal 不算错误,在数据库层面是完全没问题的,只是应用层要稍微注意而已。(虽然我也用 int )
Ianchen
2020-04-09 09:23:22 +08:00
没用过 MyISAM 引擎, 这个引擎能在 text 上建索引吗? 不会报错?
scnace
2020-04-09 09:43:03 +08:00
给这种字段加索引 建议加一个 hash(ProductName)的新字段 然后给这个字段加索引
toxicant
2020-04-09 09:45:45 +08:00
你这个头像和标题,绝配
nanguaboy
2020-04-09 10:12:58 +08:00
这个 text 类型不能理解
marcushbs
2020-04-09 10:37:53 +08:00
ORM 可以有效避免初学者 create table 时的随意,熟练之后当然随便手写
zencoding
2020-04-09 10:42:25 +08:00
DBA: 把写 DDL 的人拉出去枪毙 5 分钟
iceecream
2020-04-09 10:58:39 +08:00
咋全是 text ?
text 这种不是 mysql 的强项,换 Es 比较快
crist
2020-04-09 11:15:28 +08:00
文字都是 text 类型,LZ 也是牛逼!
jjianwen68
2020-04-09 11:23:52 +08:00
网上搜一下 db 的最佳实践学习学习
xpresslink
2020-04-09 11:27:37 +08:00
@crist 估计楼主是从 sqlite 转过来的。
ArtIsPatrick
2020-04-09 12:16:08 +08:00
建议重新建表,好好设计一下字段类型
huayumo
2020-04-09 12:23:36 +08:00
哈哈哈,做测试的,这字段也够牛逼的,从来不敢想,
jon
2020-04-09 16:11:36 +08:00
你怎么自学的这字段太惊悚了

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

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

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

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

© 2021 V2EX