V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
whatisnew
V2EX  ›  MySQL

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

  •  
  •   whatisnew · 2015-04-20 19:55:49 +08:00 · 6939 次点击
    这是一个创建于 3511 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如创建一个主键:

    PRIMARY KEY (`id`)
    

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

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

    为什么要加 _idx 标识?

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

    数据库: db_名称
    表: t_名称
    字段: f_名称
    neoblackcap
        8
    neoblackcap  
       2015-04-20 20:31:00 +08:00
    我见过这样的例子,多数是在用orm框架时,建表的时候自动创建的
    Septembers
        9
    Septembers  
       2015-04-20 22:02:55 +08:00
    @whatisnew @joyeblue
    数据库加db_,数据库加t_,数据库加f_ 本身很个人认为有问题 本身不构成标识冲突 没必要
    至于索引加标识是因为会和存储过程和函数发生命名冲突
    mfaner
        10
    mfaner  
       2015-04-20 23:22:28 +08:00
    稍微了解了下感觉这样做可以避免写引号避免各数据库引号不一样。ANSI标准是双引号但是像mysql默认是不开启的。
    ETiV
        11
    ETiV  
       2015-04-21 00:03:36 +08:00 via iPhone
    index的索引类型吧,估计还会有写成 _uniq 的?
    zts1993
        12
    zts1993  
       2015-04-21 00:47:21 +08:00 via Android
    @whatisnew 加_fk的我还真的见过,没觉得不妥啊,。
    SharkIng
        13
    SharkIng  
       2015-04-21 09:04:59 +08:00
    我觉得是你在做Design的时候这样的名字容易让人明白这是什么,Design的时候因为都是各种Document所以有的时候不加这么个前缀/后缀 会让人弄不清楚,从而后期实际做的时候就也习惯的加这么个东西了
    uephp
        14
    uephp  
       2015-04-21 09:41:28 +08:00
    习惯不加,简单干练的语法习惯
    yuankui
        15
    yuankui  
       2015-04-21 09:54:23 +08:00
    这是一个convension吧
    miao
        16
    miao  
       2015-04-21 09:57:35 +08:00
    那么问题来了, 如何高效获取 随机不连续的10个索引数据呢
    iamxi
        17
    iamxi  
       2015-04-21 10:05:24 +08:00
    只能说这是匈牙利命名法在数据库命名方面的运用吧。t_开始都是表,v_开头是视图,等等,这种可以让人一样就知道这个是名词对应的是什么。
    wizardforcel
        18
    wizardforcel  
       2015-04-21 15:29:25 +08:00 via Android
    是不是还有加 _pk _fk _ai _uni 的。。。
    notnull怎么标识
    Admstor
        19
    Admstor  
       2015-04-21 17:13:44 +08:00
    你看数据库的时候当然一目了然
    你在代码看就不是一回事了...
    ratazzi
        20
    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>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2774 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.