【问题标题】:Search data in a large Mysql table在大型 Mysql 表中搜索数据
【发布时间】:2022-01-25 18:54:34
【问题描述】:

我的问题有点牵强。

我确实有一个大数据表(超过 100 万行)。最上面的所有记录都是历史记录,供后面使用。所有新的和经常使用的数据都在底部。所以我觉得如果我的表从下往上搜索,性能会很好。那么除了使用索引之外,还有什么方法可以实现这一点?还是只是一个无用的想法?

【问题讨论】:

  • 1 million rows 不是一张大桌子,实际上我会说它很小。运行show create table table_name 并将其发布在问题上。如果你有性能问题,你应该运行 explain your query 并发布它
  • "不使用索引" -- 使用索引!向我们展示查询和SHOW CREATE TABLE;我们可以帮助您编写一个好的索引。
  • @ErgestBasha 老实说,我对我的查询速度非常满意。我只是想知道它是否可以通过使用底部搜索来改进。
  • 'search from bottom' - 数据没有按任何特定顺序存储,因此顶部和底部的概念是完全错误的。适当的索引是提高性能的方法,尽管在某些情况下优化器可能会选择不使用它们。手册中有一个专门用于优化的部分,其中包括dev.mysql.com/doc/refman/8.0/en/optimization-indexes.html

标签: mysql performance


【解决方案1】:

如果您搜索ORDER BY foo DESC 而不是ORDER BY foo ASC,某些查询会更快。但在大多数此类情况下,添加合适的INDEX 将提供更多的加速。

没有ORDER BY,优化器会做它认为最快的任何事情。这可能涉及按照存储在磁盘上的顺序扫描表——这将通过PRIMARY KEY 升序。你确实有 PK,不是吗?也许这就是您所说的“底部”和“顶部”?但可能发生的方向只有一个。

我关于索引的博客:Index Cookbook

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2012-09-19
    • 2013-07-19
    相关资源
    最近更新 更多