какие индексы несколько полей?

0

У меня вопрос для индексации полей, и я не совсем уверен, как это сделать. Какие индексы должны быть кратным полевым индексом и которые "автономны"... извините за мою терминологию:).

У меня есть таблица, в которой будут присутствовать только 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;


Спасибо!

  • 2
    Что вы храните, что могло бы потребовать такой смешной схемы?
Теги:

1 ответ

0

Индексы должны создаваться на основе ваших запросов, как вы сказали, и если я не понял вас, вы в основном применяете запрос, где на a2 и a4..

так как вы предположили, что вы можете использовать индексирование в этих двух областях.

и как и в расширенном запросе, вы используете в основном все или несколько полей.

вам не следует использовать индексирование для этих больших полей, так как это будет не так эффективно, как без каких-либо индексов.

поскольку индексирование на этих больших полях увеличивает нагрузку на запросы на вставку и удаление.

чтобы вы могли использовать индексирование в большинстве используемых полей, таких как a2 и a4, или оставить его.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню