Friday, September 19, 2008

MySQL для разработчиков

Интересные материалы Sun Tech Days MySQL. Много полезного. Например, результаты простого применения функции к индексированному столбцу (что показывает explain):

для столбца title есть индекс

mysql> EXPLAIN SELECT * FROM film WHERE title LIKE 'Tr%'
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: film
type: range
possible_keys: idx_title
key: idx_title
key_len: 767
ref: NULL
rows: 15
Extra: Using where

здесь таблица сканируется с учетом индекса (type: range). А теперь тот же запрос, но над индексированным столбцом вычисляется функция в условии Where:

mysql> EXPLAIN SELECT * FROM film WHERE LEFT(title,2) = 'Tr'
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: film
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 951
Extra: Using where

в этом случае выполняется уже полное сканирование таблицы!

No comments: