【问题标题】:How to use a indexed table for faster performance?如何使用索引表获得更快的性能?
【发布时间】:2014-04-29 19:13:32
【问题描述】:

我听说索引使搜索速度更快,但新人实际体验过这一点。我有一个在列上索引的表。现在应该如何运行查询,以便充分利用此索引并更快地获取查询?

我目前对索引表的查询:

String getFS = "select * from TABLEname where number="+MobNum;

没有特别的性能提升或任何东西。我是不是用错了索引??

这是我的表结构

CREATE TABLE `VPN_UserInformation` (

   `id` varchar(20) CHARACTER SET utf8 NOT NULL,
  `number` varchar(30) CHARACTER SET utf8 NOT NULL DEFAULT '000000000000000000000',

  PRIMARY KEY (`id`),
  KEY `number` (`number`),

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

【问题讨论】:

  • 您的表中有多少行?你使用这个索引对你的表执行了多少查询?如果您测试的行数低于 10k,那么您根本看不到任何改进。
  • 哦,我现在只有 10 行用于测试目的,但这个表在现场将有超过 100 万行。
  • 将您的测试更改为至少有 10k 行,并比较有索引和没有索引。只有在那里你才能看到差异。
  • 但现在也需要半秒钟才能获得该行。我不能提高这个性能吗??????只是雄心勃勃! :)
  • 也将取决于基数。

标签: mysql performance indexing


【解决方案1】:

是的,索引确实提高了查询性能,但有一些隐藏的东西

  1. 整数列上的索引比 varchar 列上的索引快得多(您的情况) 如果可能的话,您可以尝试将数字列(我假设是移动编号)设为整数或 bigint,并在大尺寸索引和不带索引的情况下测试性能

  2. 如果您在该表中不仅有 id 和 phone no,则不要使用 *,而只写入将在您的进一步处理中使用的必需列(这是一种最佳实践,将提高性能)

  3. 运行 reorg 和 runstats 以确保测试计划正在使用索引并且不存在碎片。

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多