Search the MySQL manual:
MySQL Manual

Buy this Reference Manual in softcover from Barnes & Noble!

/ / Up / Table of Contents

5.2.4 Как MySQL оптимизирует выражения WHERE

Описание оптимизации выражений WHERE помещено в раздел, посвященный SELECT, потому что они главным образом используются в запросах SELECT, но для выражений WHERE в операторах DELETE и UPDATE используются те же способы оптимизации.

Отметим также, что данный раздел неполон. В MySQL реализовано много возможностей оптимизации, и у нас не было времени, чтобы задокументировать их все.

Ниже перечислены некоторые из оптимизации, выполняемых MySQL:

Вот некоторые примеры очень быстрых запросов:

mysql> SELECT COUNT(*) FROM tbl_name;
mysql> SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;
mysql> SELECT MAX(key_part2) FROM tbl_name
    ->        WHERE key_part_1=constant;
mysql> SELECT ... FROM tbl_name
    ->        ORDER BY key_part1,key_part2,... LIMIT 10;
mysql> SELECT ... FROM tbl_name
    ->        ORDER BY key_part1 DESC,key_part2 DESC,... LIMIT 10;

Для выполнения следующих запросов используется только индексное дерево (предполагается, что индексированные столбцы числовые):

mysql> SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;
mysql> SELECT COUNT(*) FROM tbl_name
    ->        WHERE key_part1=val1 AND key_part2=val2;
mysql> SELECT key_part2 FROM tbl_name GROUP BY key_part1;

Следующие запросы используют индексацию, чтобы получить отсортированные строки без дополнительного прохода для сортировки:

mysql> SELECT ... FROM tbl_name
    ->            ORDER BY key_part1,key_part2,... ;
mysql> SELECT ... FROM tbl_name
    ->            ORDER BY key_part1 DESC,key_part2 DESC,... ;

User Comments

Posted by on Monday February 17 2003, @7:54pm [Delete] [Edit]

(I'm not sure this is proper place for this issue. tell me where to go that i should move this comment.)

mysql version: 3.23.27-beta
perl: v5.6.1 built for MSWin32-x86-multi-thread
apache: Apache/1.3.26 (Win32)

there're titles and two of them are titled as "asdljf - Psychic Vampire asldkfjad" and "Psychic Vampire? (asdfdf".

when i query like the following at the mysql console:

ex> select count(*) from bbs_1000 where user<>'' and ( title like '%psy%' );

result: 2

but when i query the same through perl source using DBI(), nothing resulted.

i think i might need to upgrade. when i make 'psy' upper cases, resulted properly.

sorry, so complicate to write down here all. anybody suffering the same case? -- Hyungjin Ahn([email protected])

Add your own comment.

Top / / / Up / Table of Contents