MySQL : Selecting values from a specific column is very slow

I have a mysql database called key_word . It has 3 columns, 23 million rows.

Please have a look at the below query.

SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001'

This query takes around 6 seconds to display me the result. Result contains 169669 rows. This is very very slow. However, I have noticed that this occurs "only" if I trying to get records in indexVal . All the below queries are very fast.

SELECT `primary_key` FROM `key_word` WHERE `hashed_word`='001'
SELECT `hashed_word` FROM `key_word` WHERE `indexVal`=0

All these 3 columns are indexed separatly, so I don't understand why it is slow when I am trying to get data from indexVal by searching hashed_word

Below is my Table structure.

在这里输入图像描述

Below is some more information about the table

So, why this selecting from indexVal while searching from hashed_word is slow? How can I solve this?

UPDATE

As requested, I am posting the result of

EXPLAIN SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001'

below

UPDATE

The result of SHOW VARIABLES LIKE '%query_cache_size%'; SHOW VARIABLES LIKE '%query_cache_type%'; SHOW VARIABLES LIKE '%query_cache_size%'; SHOW VARIABLES LIKE '%query_cache_type%'; is below


SELECT primary_key FROM key_word WHERE hashed_word='001' is faster than SELECT indexVal FROM key_word WHERE hashed_word='001' because in InnoDB the primary key value is always included in any secondary index; this means that primary_key is read from the index. In the second query however, MySQL first reads the primary key from the index, than it reads the value of indexVal from the table row. In other words it persoms 2x disk reads.


You could try to make an index over hashed_word and indexVal (in that order).

This index will be fast for selecting based on a criterion on hashed_word AND the index includes indexVal in its index data so the data does not need to be read from the disk.

链接地址: http://www.djcxy.com/p/78750.html

上一篇: Django,ajax使用模型数据填充表单

下一篇: MySQL:从特定列中选择值非常慢