berkut
Новичок
оптимизация order by
подсобите камрады, что-то не понимаю, почему идет полный скан таблицы и не юзаются индексы:
в первой таблице 133000 рядов, во второй - 66000
эксплейн говорит:
SIMPLE, table-uad, type-all, key-null, rows-66626, extra-using filesort
запрос исполняется 2 секунды
подсобите камрады, что-то не понимаю, почему идет полный скан таблицы и не юзаются индексы:
Код:
CREATE TABLE users_associations(
id INT (11) UNSIGNED NOT NULL DEFAULT 0,
item_1 MEDIUMINT (9) UNSIGNED NOT NULL DEFAULT 0,
item_2 MEDIUMINT (9) UNSIGNED NOT NULL DEFAULT 0,
creator MEDIUMINT (9) UNSIGNED NOT NULL DEFAULT 0,
flag SET ('own', 'friend') DEFAULT NULL,
INDEX creator USING BTREE (creator),
INDEX creator_2 USING BTREE (creator, id),
UNIQUE INDEX index1 USING BTREE (creator, item_1, item_2),
INDEX index2 USING BTREE (item_1, item_2)
)
ENGINE = MYISAM
CHARACTER SET utf8
COLLATE utf8_general_ci;
CREATE TABLE user_association_data(
id INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
association_id INT (11) UNSIGNED NOT NULL DEFAULT 0,
`date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
description TEXT NOT NULL,
show_to ENUM ('all', 'myself', 'friends') DEFAULT 'all',
PRIMARY KEY (id),
INDEX assId USING BTREE (association_id, `date`)
)
ENGINE = MYISAM
AUTO_INCREMENT = 66854
CHARACTER SET utf8
COLLATE utf8_general_ci;
Код:
SELECT SQL_CALC_FOUND_ROWS *
FROM
users_associations AS ua
INNER JOIN user_association_data AS uad ON ua.id = uad.association_id
WHERE
ua.creator = 2
ORDER BY uad.date DESC
LIMIT 0, 10
SIMPLE, table-uad, type-all, key-null, rows-66626, extra-using filesort
запрос исполняется 2 секунды