【问题标题】:Slow search by index query LIKE% MYSQL通过索引查询慢搜索 LIKE% MYSQL
【发布时间】:2012-09-26 13:49:41
【问题描述】:

我的表有 100 000 000 行这么大。 表结构

id         int          INDEX(not primary not unique just index)
lang_index varchar(5)   INDEX
name       varchar(255) INDEX
enam       varchar(255) INDEX

好的。我做查询

1 个查询

"SELECT name FROM table WHERE lang_index='en' AND name LIKE 'myname%'"

这张大桌子的速度还可以。大约 0.02 秒。

我试试 2 查询

"SELECT name FROM table WHERE lang_index='en' AND (name LIKE 'myname%' OR enam LIKE 'myname%')"

230 秒左右非常非常慢!!!

那我试试这个 3 查询

"SELECT name FROM table WHERE lang_index='en' AND enam LIKE 'myname%'"

速度太棒了。大约 0.02 秒。

然后我为两个查询(1 和 3 查询)展开我的第二个查询,它的速度更快。大约 0.04 秒,但不简单。

为什么我的查询很慢?两个查询比一个快得多。 我需要这样做"SELECT name FROM table WHERE lang_index='en' AND (name LIKE 'myname%' OR enam LIKE 'myname%')" 我怎样才能让它更快?

【问题讨论】:

  • EXPLAIN your_query 说什么?
  • 解释说... id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE lal ref lang_index,name,eman lang_index 18 const 2048048 Using where

标签: mysql performance indexing sql-like


【解决方案1】:

OR 关键字让 MySQL 的优化器发疯。

你可以试试这样的。

SELECT name FROM table WHERE lang_index='en' AND name LIKE 'myname%'
UNION
SELECT name FROM table WHERE lang_index='en' AND enam LIKE 'myname%'

或者您可以考虑全文搜索。它需要 MyISAM 或 MySQL 5.6 或更高版本。

编辑* 很难确切地知道这些优化的事情发生了什么。你能试试这个吗?这将查看语言选择是否影响您。

 SELECT name 
   FROM table 
  WHERE (name LIKE 'myname%' OR enam LIKE 'myname%')

你可以试试这个吗?

SELECT name FROM table WHERE lang_index='en' AND name LIKE 'myname%'
UNION ALL
SELECT name FROM table WHERE lang_index='en' AND enam LIKE 'myname%'

它不会给出完美的结果——它会有重复的名称项——但它会在您的查询中跳过DISTINCT 重复数据删除步骤。

你也可以试试这个。

SELECT name 
  FROM table
 WHERE lang_index='en'
   AND id IN (
    SELECT id from table 
     WHERE (name LIKE 'myname%' OR enam LIKE 'myname%'))

【讨论】:

  • 谢谢,但我会尝试测试您的每个查询。一切都很慢。我停止了有两个查询的版本。我无法理解 mysql 的逻辑,我尝试查看每个查询的 EXPLAIN 信息,一切正常 mysql 使用索引,但速度很慢。更快的结果 - 使用两个查询。感谢您尝试帮助我。再次感谢。
猜你喜欢
  • 2021-09-04
  • 2011-10-04
  • 2013-05-27
  • 2012-06-11
  • 2014-10-20
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
相关资源
最近更新 更多