У меня вопрос для индексации полей, и я не совсем уверен, как это сделать. Какие индексы должны быть кратным полевым индексом и которые "автономны"... извините за мою терминологию:).
У меня есть таблица, в которой будут присутствовать только insert, delete и select, только a104 будет обновляемым, другие поля будут "только для чтения"... Таким образом, у меня есть 106 полей, а данные 105 полей никогда не будут меняться. Как только запись будет в таблице, она останется неизменной... только через несколько дней она переместится в архивную таблицу. (Вставьте, удалите, выберите, где будет присутствовать...). У меня будет простая и подробная страница поиска для поиска записей. Вставка частоты я предполагаю до 2500 в день... Удалить до 1000 записей в день... пока...
Простой поиск будет выбран следующим образом:
SELECT * FROM my_table WHERE ad2 = 'yyy' и ad4 = 'qqq' (где часть всегда начинается с ad2! может быть оставлено другое поле... Я полагаю, что один индекс будет
для этих двух полей: KEY firstindex
(ad2
, ad4
)
Расширенный поиск предоставит пользователю несколько полей в предложениях WHERE... a1, a2, a3, a4, a25, a26, a27, a28, a31, a32, a33, a35 и все от a41 до a101 → эти все являются битовыми полями
Все указанные поля в простом и расширенном поиске будут содержать данные, которые никогда не будут меняться, только после того, как записи будут удалены (перемещены в архивную таблицу...) Поэтому мой вопрос заключается в том, как настроить индексы в моем случае, чтобы получить лучшую производительность для выбора и компрометации для вставки и удаления...
Это моя таблица MyISAM.... (не очень маленькая)
CREATE TABLE my_table
(id
int (11) unsigned NOT NULL auto_increment, a1
varchar (100) NOT NULL default '', a2
varchar (100) NOT NULL default '', a3
varchar (100) NOT NULL default '', a4
varchar (100) NOT NULL default '', a5
varchar (60) NOT NULL default '', a6
varchar (60) NOT NULL default '', a7
varchar (15) NOT NULL default '', a8
varchar (100) NOT NULL default '', a9
varchar (60) NOT NULL default '', a10
varchar (20) NOT NULL default '', a11
varchar (60) NOT NULL default '', a12
varchar (60) NOT NULL default '', a13
varchar (60) NOT NULL default '', a14
varchar (100) NOT NULL default '', a15
varchar (60) NOT NULL default '', a16
varchar (60) NOT NULL default '', a17
varchar (15) NOT NULL default '', a18
varchar (100) NOT NULL default '', a19
varchar (60) NOT NULL default '', a20
varchar (11) NOT NULL default '', a21
varchar (60) NOT NULL default '', a22
varchar (60) NOT NULL default '', a23
varchar (60) NOT NULL default '', a24
varchar (60) NOT NULL default '', a25
date NOT NULL, a26
время NOT NULL, a27
дата NOT NULL, a28
время NOT NULL, a29
decimal (2,0) NOT NULL default '0', a30
decimal (25,6) NOT NULL default '0.000000', a31
бит (1) NOT NULL, a32
decimal (2,0) NOT NULL default '0', a33
decimal (52,6) NOT NULL default '0.000000', a34
varchar (50) NOT NULL default '', a35
varchar (50) NOT NULL default '', a36
varchar (50) NOT NULL default '', a37
varchar (50) NOT NULL default '', a38
varchar (50) NOT NULL default '', a39
varchar (50) NOT NULL default '', a40
varchar (50) NOT NULL default '', a41
бит (1) NOT NULL default '\ 0', a42
бит (1) NOT NULL по умолчанию '\ 0', a43
бит (1) NOT NULL default '\ 0', a44
бит (1) NOT NULL default '\ 0', a45
бит (1) NOT NULL default '\ 0', a46
бит (1) NOT NULL default '\ 0', a47
бит (1) NOT NULL default '\ 0', a48
бит (1) NOT NULL по умолчанию '\ 0', a49
бит (1) NOT NULL по умолчанию '\ 0', a50
бит (1) NOT NULL по умолчанию '\ 0', a51
бит (1) NOT NULL по умолчанию '\ 0', a52
бит (1) NOT NULL по умолчанию '\ 0', a53
бит (1) NOT NULL default '\ 0', a54
бит (1) NOT NULL default '\ 0', a55
бит (1) NOT NULL default '\ 0', a56
бит (1) NOT NULL по умолчанию '\ 0', a57
бит (1) NOT NULL default '\ 0', a58
бит (1) NOT NULL default '\ 0', a59
бит (1) NOT NULL по умолчанию '\ 0', a60
бит (1) NOT NULL default '\ 0', a61
бит (1) NOT NULL по умолчанию '\ 0', a62
бит (1) NOT NULL default '\ 0', a63
бит (1) NOT NULL default '\ 0', a64
бит (1) NOT NULL default '\ 0', a65
бит (1) NOT NULL по умолчанию '\ 0', a66
бит (1) NOT NULL default '\ 0', a67
бит (1) NOT NULL по умолчанию '\ 0', a68
бит (1) NOT NULL по умолчанию '\ 0', a69
бит (1) NOT NULL default '\ 0', a70
бит (1) NOT NULL по умолчанию '\ 0', a71
бит (1) NOT NULL default '\ 0', a72
бит (1) NOT NULL по умолчанию '\ 0', a73
бит (1) NOT NULL default '\ 0', a74
бит (1) NOT NULL default '\ 0', a75
бит (1) NOT NULL по умолчанию '\ 0', a76
бит (1) NOT NULL default '\ 0', a77
бит (1) NOT NULL default '\ 0', a78
бит (1) NOT NULL default '\ 0', a79
бит (1) NOT NULL default '\ 0', a80
бит (1) NOT NULL default '\ 0', a81
бит (1) NOT NULL default '\ 0', a82
бит (1) NOT NULL default '\ 0', a83
бит (1) NOT NULL default '\ 0', a84
бит (1) NOT NULL default '\ 0', a85
бит (1) NOT NULL default '\ 0', a86
бит (1) NOT NULL default '\ 0', a87
бит (1) NOT NULL default '\ 0', a88
бит (1) NOT NULL default '\ 0', a89
бит (1) NOT NULL по умолчанию '\ 0', a90
бит (1) NOT NULL default '\ 0', a91
бит (1) NOT NULL default '\ 0', a92
бит (1) NOT NULL default '\ 0', a93
бит (1) NOT NULL default '\ 0', a94
бит (1) NOT NULL по умолчанию '\ 0', a95
бит (1) NOT NULL default '\ 0', a96
бит (1) NOT NULL по умолчанию '\ 0', a97
бит (1) NOT NULL default '\ 0', a98
бит (1) NOT NULL default '\ 0', a99
бит (1) NOT NULL default '\ 0', a100
бит (1) NOT NULL по умолчанию '\ 0', a101
бит (1) NOT NULL default '\ 0', a102
текст NOT NULL, a103
int (11) NOT NULL, a104
enum ('a', 'n', 'r') NOT NULL, a105
timestamp NOT NULL default CURRENT_TIMESTAMP,
ПЕРВИЧНЫЙ КЛЮЧ (id
)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
Спасибо!
Индексы должны создаваться на основе ваших запросов, как вы сказали, и если я не понял вас, вы в основном применяете запрос, где на a2 и a4..
так как вы предположили, что вы можете использовать индексирование в этих двух областях.
и как и в расширенном запросе, вы используете в основном все или несколько полей.
вам не следует использовать индексирование для этих больших полей, так как это будет не так эффективно, как без каких-либо индексов.
поскольку индексирование на этих больших полях увеличивает нагрузку на запросы на вставку и удаление.
чтобы вы могли использовать индексирование в большинстве используемых полей, таких как a2 и a4, или оставить его.