【发布时间】: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