zoukankan      html  css  js  c++  java
  • mysql索引

    mysql 进行范围查询是并没有用到字段中的索引,是什么原因呢?

    建立数据表:

    CREATE TABLE IF NOT EXISTS `index` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `pp` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
      `fid` smallint(6) NOT NULL,
      `timeint(12) NOT NULL,
      `threadid-floor` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (`id`),
      KEY `index` (`pp`,`fid`,`time`),
      KEY `pp` (`pp`),
      KEY `time` (`time`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='用户搜索' AUTO_INCREMENT=62878612 ;
     
    然后使用下面sql查询:
    explain select `threadid-floor` from `index` force index(`time`) where `time`>1370304000;
    发现并没有用到索引,
     
     
    总结:
    mysql是否根据首次索引条件查出来的主键进行二次查找,也是要看查询出来的数量级,如果查询出来的数据量接近全表的数据量,就会全表扫描,否则根据第一次查询出来的主键进行二次查找,具体更具explain等进行测试.
     
    在这么情况下,mysql不会使用索引
  • 相关阅读:
    精品绿色便携软件下载站
    DIV + CSS
    CSS基础
    尘封往事
    最近ゲームにはまってる。
    比水更浓的水
    有些事我得记下来
    一年前的今晚,注定是个岔路口.
    放下全世界
    超级保镖:国外精品个人防火墙亲密接触(2) java程序员
  • 原文地址:https://www.cnblogs.com/skl-bobo/p/10472748.html
Copyright © 2011-2022 走看看