iT邦幫忙

DAY 20
5

MySQL那些事兒系列 第 20

關於索引的一些探討(六)

今天要探討關於Pattern Matching與索引.
Pattern Matching應用很多,因為我們不只想知道
精確的,也會想要知道某類型的資料到底有多少?
例如除了桜木凛以外,還有沒有桜木花道?
這時候就需要用到Pattern Matching了.

EXPLAIN SELECT *
   FROM AVGals
  WHERE name LIKE '桜木%'\G

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: AVGals
         type: range
possible_keys: name
          key: name
      key_len: 62
          ref: NULL
         rows: 1
        Extra: Using where

type是range,key是name,代表有使用索引,rows是1,只有1筆.
這樣能夠應用索引的查詢,效率會較好.

那若是要找出中間有"崎"的呢?

EXPLAIN SELECT *
   FROM AVGals
  WHERE name LIKE '%崎%'\G

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: AVGals
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 4
        Extra: Using where

type是ALL,key是NULL,rows是4.代表是全表掃描,沒有使用索引.

由上面兩個例子可以知道,使用Pattern Matching要注意的技巧.
當然有些查詢,雖然無法使用索引,但是也是必要的,要視實際情況.
在允許的情況下,盡量讓MySQL能夠使用索引來協助,會有較好的效率.


上一篇
關於索引的一些探討(五)
下一篇
關於索引的一些探討(七)
系列文
MySQL那些事兒30

1 則留言

我要留言

立即登入留言