› 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 · 9926 views
    This topic created in 4804 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   ·   Privacy   ·   Solana   ·   2505 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 07:26 · PVG 15:26 · LAX 00:26 · JFK 03:26
    ♥ Do have faith in what you're doing.