кхе кхе...
скажи мне пожалуйсто как могут помочь индексы сортировке?
допустим ALTER TABLE ibf_gallery_categories ORDER BY c_order ASC;
децл поможет но это дело разово т.е. при изменени любых данных надо делать опять сортировку таблицы но это опять таки не помогает.
Не смотря на то что написано в мануале индекс не цепляется.
Indexes are used to:
Sort or group a table if the sorting or grouping is done on a leftmost prefix of a usable key (for example, ORDER BY key_part_1,key_part_2 ). The key is read in reverse order if all key parts are followed by DESC. The index can also be used even if the ORDER BY doesn't match the index exactly, as long as all the unused index parts and all the extra are ORDER BY columns are constants in the WHERE clause. The following queries will use the index to resolve the ORDER BY part:
SELECT * FROM foo ORDER BY key_part1,key_part2,key_part3;
SELECT * FROM foo WHERE column=constant ORDER BY column, key_part1;
SELECT * FROM foo WHERE key_part1=const GROUP BY key_part2;
далее эксплейн я читал, не маленький букварь знаю
Если ты про статью оптимизация запросов в детейле то там ни слова нет про сортировки и индексы.
Далее что значит правильно использовать? я что-то не наблюдаю в CREATE indeX хороших опций. Далее если ты про USE INDEX то не канает, проход идет все равно полный.
для понятности приведу describe и show index :
mysql> describe ibf_gallery_categories;
+------------------+---------------------+------+-----+--------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------------------+------+-----+--------------+----------------+
| id | int(10) unsigned | | PRI | NULL | auto_increment |
| parent | int(10) unsigned | | MUL | 0 | |
| name | char(60) | | | | |
| description | char(100) | YES | | NULL | |
| c_order | int(10) unsigned | | MUL | 0 | |
| images | bigint(10) unsigned | | | 0 | |
| comments | bigint(10) unsigned | | | 0 | |
| perms_view | char(120) | | | | |
| perms_images | char(120) | | | | |
| perms_comments | char(120) | | | | |
| perms_moderate | char(120) | | | | |
| allow_ibfcode | tinyint(1) unsigned | | | 1 | |
| allow_html | tinyint(1) unsigned | | | 0 | |
| password | char(60) | | | | |
| approve_images | tinyint(1) unsigned | | | 0 | |
| imgs_per_col | int(5) unsigned | | | 4 | |
| imgs_per_row | int(5) unsigned | | | 5 | |
| watermark_images | tinyint(1) unsigned | | | 0 | |
| thumbnail | tinyint(1) unsigned | | | 1 | |
| allow_comments | tinyint(1) unsigned | | | 1 | |
| approve_comments | tinyint(1) unsigned | | | 0 | |
| inc_post_count | tinyint(1) unsigned | | | 1 | |
| status | tinyint(1) unsigned | | | 1 | |
| last_pic | bigint(10) unsigned | | | 0 | |
| def_view | char(30) | YES | | date
ESC:30 | |
+------------------+---------------------+------+-----+--------------+----------------+
25 rows in set (0.02 sec)
mysql> show index from ibf_gallery_categories;
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
| ibf_gallery_categories | 0 | PRIMARY | 1 | id | A | 973 | NULL | NULL | | BTREE | |
| ibf_gallery_categories | 1 | parent | 1 | parent | A | 24 | NULL | NULL | | BTREE | |
| ibf_gallery_categories | 1 | c_order | 1 | c_order | A | 973 | NULL | NULL | | BTREE | |
3 rows in set (0.00 sec)
mysql> explain SELECT c.* FROM ibf_gallery_categories c ORDER BY c_order ASC;
+-------+------+---------------+------+---------+------+------+----------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+-------+------+---------------+------+---------+------+------+----------------+
| c | ALL | NULL | NULL | NULL | NULL | 973 | Using filesort |
+-------+------+---------------+------+---------+------+------+----------------+
1 row in set (0.00 sec)
Я жуе перевел эту табличку в fixed про этому char. Практика показала что при больших нагрузках fixed на данной табличке действительно дает увеличение производительности в среднем случае в худшем же результат такой же как в dynamic.
Если подскажешь как заставить запрос юзать индекс я буду очень признателен пока ни чего дельного я не нашел.