永发信息网

如何利用mysql索引优化检索

答案:1  悬赏:40  手机版
解决时间 2021-03-07 17:45
学习mysql遇到这么一个情况,因为数据太多,导致 查询缓慢,看到有些资料说能用索引,但是理解,请大家看看我这个表应该怎么用索引
这个表只有4列,分别是H,S,V,C,只有一个查询语句时select C from table where ?
最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-03-06 18:27
索引用于快速找到特定一些值的记录。如果没有索引,MySQL就必须从第一行记录开始读取整个表来检索记录。表越大,资源消耗越大。如果在字段上有索引的话,MySQL就能很快决定该从数据文件的哪个位置开始搜索记录,而无须查找所有的数据。如果表中有1000条记录的话,那么这至少比顺序地读取数据快100倍。注意,如果需要存取几乎全部1000条记录的话,那么顺序读取就更快了,因为这样会使磁盘搜索最少。
  大部分MySQL索引(PRIMARY KEY, UNIQUE,INDEX 和 FULLTEXT)都是以B树方式存储。只有空间类型的字段使用R树存储,MEMORY (HEAP)表支持哈希索引。
  字符串默认都是自动压缩前缀和后缀中的空格。
  通常,如下所述几种情况下可以使用索引。哈希索引(用于 MEMORY 表)的独特之处在后面会讨论到。
  想要尽快找到匹配 WHERe 子句的记录。
  根据条件排除记录。如果有多个索引可共选择的话,MySQL通常选择能找到最少记录的那个索引。
  做表连接查询时从其他表中检索记录。
  想要在指定的索引字段 key_col 上找到它的 MIN() 或 MAX() 值。优化程序会在检查索引的
  key_col 字段前就先检查其他索引部分是否使用了 WHERe key_part_# = constant 子句。这样的话,
  MySQL会为 MIN() 或 MAX() 表达式分别单独做一次索引查找,并且将它替换成常数。当所有的表达式都被替换成常数后,查询就立刻返回。如下:
  SELECt MIN(key_part2),MAX(key_part2) FROM tbl_name WHERe key_part1=10;
  对表作排序或分组,当在一个可用的最左前缀索引上做分组或排序时(如 ORDER
  BY key_part1, key_part2)。如果所有的索引部分都按照 DESC 排序,索引就按倒序排序。
  有些时候,查询可以优化使得无需计算数据就能直接取得结果。当查询使用表中的一个数字型字段,且这个字段是索引的最左部分,则可能从索引树中能很快就取得结果:
  SELECtkey_part3FROMtbl_nameWHERekey_part1=1
  假设有如下 SELECT 语句:
  如果在 col1 和 col2 上有一个多字段索引的话,就能直接取得对应的记录了。
希望能解决您的问题。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯