为什么有人创建数据库索引喜欢加 _idx 标识?

2015-04-20 19:55:49 +08:00
 whatisnew

比如创建一个主键:

PRIMARY KEY (`id`)

但是创建一个索引的时候:

-- 为什么要加这个 _idx 标识呢?
KEY `status_idx` (`status`)
-- 我觉得,不加也挺好啊
KEY `status` (`status`)

为什么要加 _idx 标识?

6717 次点击
所在节点    MySQL
20 条回复
joyeblue
2015-04-20 19:58:48 +08:00
idx是index的缩写。
whatisnew
2015-04-20 20:00:23 +08:00
@joyeblue 我知道啊。。。但是他本来就是一个 index key 为嘛还要 _idx 不觉得很不美观嘛
joyeblue
2015-04-20 20:00:45 +08:00
这表示一种习惯的用法,我一般是将idx加在字段名的前面。
oott123
2015-04-20 20:05:39 +08:00
大概:“看看看!!我是一个索引哟~索引索引呢!” 吧……
whatisnew
2015-04-20 20:09:39 +08:00
@oott123 ...
那 FOREIGN KEY 岂不是每个每加要 _fk 唯一索引不是要加 _uidx
。。。想想就凌乱了
caixiexin
2015-04-20 20:14:31 +08:00
约定俗成,要么都这么干,要么都不这么干,同个项目有些地方用有些地方不用才凌乱呢= =||
joyeblue
2015-04-20 20:14:46 +08:00
@whatisnew 这样命名更清晰啊。
类似的还有:

数据库: db_名称
表: t_名称
字段: f_名称
neoblackcap
2015-04-20 20:31:00 +08:00
我见过这样的例子,多数是在用orm框架时,建表的时候自动创建的
Septembers
2015-04-20 22:02:55 +08:00
@whatisnew @joyeblue
数据库加db_,数据库加t_,数据库加f_ 本身很个人认为有问题 本身不构成标识冲突 没必要
至于索引加标识是因为会和存储过程和函数发生命名冲突
mfaner
2015-04-20 23:22:28 +08:00
稍微了解了下感觉这样做可以避免写引号避免各数据库引号不一样。ANSI标准是双引号但是像mysql默认是不开启的。
ETiV
2015-04-21 00:03:36 +08:00
index的索引类型吧,估计还会有写成 _uniq 的?
zts1993
2015-04-21 00:47:21 +08:00
@whatisnew 加_fk的我还真的见过,没觉得不妥啊,。
SharkIng
2015-04-21 09:04:59 +08:00
我觉得是你在做Design的时候这样的名字容易让人明白这是什么,Design的时候因为都是各种Document所以有的时候不加这么个前缀/后缀 会让人弄不清楚,从而后期实际做的时候就也习惯的加这么个东西了
uephp
2015-04-21 09:41:28 +08:00
习惯不加,简单干练的语法习惯
yuankui
2015-04-21 09:54:23 +08:00
这是一个convension吧
miao
2015-04-21 09:57:35 +08:00
那么问题来了, 如何高效获取 随机不连续的10个索引数据呢
iamxi
2015-04-21 10:05:24 +08:00
只能说这是匈牙利命名法在数据库命名方面的运用吧。t_开始都是表,v_开头是视图,等等,这种可以让人一样就知道这个是名词对应的是什么。
wizardforcel
2015-04-21 15:29:25 +08:00
是不是还有加 _pk _fk _ai _uni 的。。。
notnull怎么标识
Admstor
2015-04-21 17:13:44 +08:00
你看数据库的时候当然一目了然
你在代码看就不是一回事了...
ratazzi
2015-04-30 17:52:17 +08:00
PostgreSQL 运行这句 SQL 就知道了,会统计数据表、索引等的空间占用,有个 idx 后缀会很清晰

SELECT relname AS "relation", pg_size_pretty(pg_relation_size(C.oid)) AS "size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') ORDER BY pg_relation_size(C.oid) DESC LIMIT 30;</pre>

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

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

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

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

© 2021 V2EX