InnoDB不支持hash索引,怎么破? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
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
leonwong
V2EX    MySQL

InnoDB不支持hash索引,怎么破?

  •  
  •   leonwong Jul 30, 2013 9499 views
    This topic created in 4657 days ago, the information mentioned may be changed or developed.
    RT,有些字段例如保存用户密码的无序的MD5字段我觉得很有必要使用hash索引,但是InnDB不支持hash,如果换成MyISAM又不支持事务,怎么破,不过据说InnoDB有自适应hash索引,不知道效果如何?懂的人麻烦吱声下,谢谢啦
    19 replies    1970-01-01 08:00:00 +08:00
    holystrike
        1
    holystrike  
       Jul 30, 2013
    密码字段为什么需要建索引呢?
    0bit
        2
    0bit  
       Jul 30, 2013
    很好破,一劳永逸,用PostgreSQL
    leonwong
        3
    leonwong  
    OP
       Jul 31, 2013
    @holystrike 因为where子句后接密码字段,而且无序排列,索引查找应该会更快定位
    leonwong
        4
    leonwong  
    OP
       Jul 31, 2013
    @0bit 转换数据库系统成本可能会有点高
    Actrace
        5
    Actrace  
       Jul 31, 2013
    我有个库1.8T的数据(3000W+数据),里面用32char的MD5做唯一性索引,现在的响应速度是1秒内。
    yemoluo
        6
    yemoluo  
       Jul 31, 2013
    XX 密码字段带入查询,汗啊
    coderliss
        7
    coderliss  
       Jul 31, 2013
    汗,古怪的需求就是这样子来的。
    zhicheng
        8
    zhicheng  
       Jul 31, 2013
    @Actrace MD5 建议用 binary(16)
    jimrok
        9
    jimrok  
       Jul 31, 2013
    你把md5带入sql,一旦被sql注入,你就糗大了。
    leonwong
        10
    leonwong  
    OP
       Jul 31, 2013
    @Actrace 谢谢提供数据参考
    leonwong
        11
    leonwong  
    OP
       Jul 31, 2013
    @jimrok 那该如何解决
    xlogion
        12
    xlogion  
       Jul 31, 2013   1
    @leonwong 完全可以按照用户名查询用户,然后对比结果的密码字段,没必要带着密码字段一同查询
    jimrok
        13
    jimrok  
       Jul 31, 2013   1
    @leonwong select users.password_hash,users.salt from users where users.email = 'login_email'

    if (users.password == 'your hash string' then
    leonwong
        14
    leonwong  
    OP
       Jul 31, 2013
    @xlogion 懂你们意思了,谢谢
    leonwong
        15
    leonwong  
    OP
       Jul 31, 2013
    @jimrok 懂你意思了,万分感谢
    rwx
        16
    rwx  
       Jul 31, 2013
    为什么WHERE查询里会有密码做为条件?难道连比较密码这种事情也要数据库帮做么。。

    让我想起以前见过的一个项目,php的全部作用就是根据路由参数向数据库做一个查询,所有的业务逻辑都写成存储过程由数据库执行。。
    leonwong
        17
    leonwong  
    OP
       Jul 31, 2013
    @rwx 我是没有想过sql注入这个东西
    coderliss
        18
    coderliss  
       Aug 2, 2013   1
    @leonwong 注入只是问题之一,多一个字段多一点风险罢了。
    首先是不利于扩展,怎么区分用户不存在,和用户密码错误这两种情况?
    其二是建索引影响插入性能,没必要的性能浪费
    jasontse
        19
    jasontse  
       Aug 2, 2013 via iPad   1
    想起了1' or 1=1
    About     Help     Advertise     Blog     API     FAQ     Solana     1607 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 16:18 PVG 00:18 LAX 09:18 JFK 12:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86