【问题标题】:InnoDB extremely slow SELECT queries on VARCHAR columnsInnoDB 对 VARCHAR 列的 SELECT 查询非常慢
【发布时间】:2013-07-19 20:38:36
【问题描述】:

我有一个 InnoDB 数据库,主表中有大约 200K 行。尝试根据 VARCHAR (50) 字段在此表中选择行时,我遇到了极其缓慢的查询。

我的查询采用以下形式:

SELECT * FROM table1 WHERE column1 = 'ABC3849DKJFL233489JKJFFK' and column2 = 'UIOJ3833838JJKFDL948DJ';

这些查询使我的脚本速度降低了许多数量级,在我解决此问题之前无法继续我的工作。

除了这些 VARCHAR 字符串之外,我没有其他方法可以选择行。关于如何加快这些查询的任何想法?有什么我可以在这里做的吗?

【问题讨论】:

标签: mysql innodb


【解决方案1】:

将两列的索引一起添加应该可以加快速度。试试:

ALTER TABLE `table1`
    ADD INDEX `dual_index` (`column1`, `column2`);

【讨论】:

  • 感谢您的回复。我会试一试,但是如果有时我仅按第 1 列选择,有时按两列选择,您能告诉我该怎么办吗?例如,有时我会像这样选择:SELECT * FROM table1 WHERE column1 = 'ABC3849DKJFL233489JKJFFK',有时会像上面的例子一样SELECT * FROM table1 WHERE column1 = 'ABC3849DKJFL233489JKJFFK' and column2 = 'UIOJ3833838JJKFDL948DJ' ...所以我应该为每个案例创建两个单独的索引吗?
  • @halgonia 您是否创建了任何索引并取得了成功?我有这个确切的问题。如果我自己在第一个字段上匹配,它很快。如果我自己在第二场比赛,那就太快了。我对每个字段都有单独的索引。如果我在同一个查询中匹配两个字段,它会很慢(比如 0.02 秒对 5 秒)。我考虑过在这两个字段上创建另一个索引,但还没有尝试过。对我的应用程序中的所有查询排列都需要这样做似乎很疯狂,这真的有必要吗?
猜你喜欢
  • 1970-01-01
  • 2021-07-11
  • 2015-02-06
  • 1970-01-01
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
相关资源
最近更新 更多