У меня есть MySQL DB с двумя столбцами. 'Key' и 'Used'. Ключ - это строка, Used - целое число. Есть ли очень быстрый способ поиска конкретного ключа, а затем вернуть использование в огромном БД MySQL с 6000000 рядами данных.Запрос огромного MySQL DB
ответ
Вы можете сделать это быстро, создав индекс на key
поле:
CREATE INDEX mytable_key_idx ON mytable (`key`);
Вы можете на самом деле сделать это еще быстрее для чтения путем создания покрытия индекса на обоих (key, used)
полях:
CREATE INDEX mytable_key_used_idx ON mytable (`key`, `used`);
В этот случай, при чтении, MySQL мог получить значение used
из самого индекса, не читая таблицу (только для проверки только индекса). Однако, если у вас много активности записи, индекс покрытия может работать медленнее, потому что теперь он должен обновлять как индекс, так и фактическую таблицу.
Другой способ - использовать таблицу разделов :). –
Если ключ был ключом кластера таблицы InnoDB, индекс покрытия не был бы необходим, так как вся таблица сама по себе является индексом. – spencer7593
@SumitGupta: Я не думаю, что таблица разбиения будет иметь какое-то преимущество здесь. Это принесет ненужную сложность без очевидных преимуществ. – mvp
Нормативный SQL для этого будет:
SELECT t.key, t.used FROM mytable t WHERE t.key = 'particularvalue' ;
Выход из
EXPLAIN
SELECT t.key, t.used FROM mytable t WHERE t.key = 'particularvalue' ;
Даст подробности о плане доступа, какие индексы рассматриваются и т.д.
выход с
SHOW CREATE TABLE mytable ;
предоставит информацию о таблице, используемом двигателе и доступных индексах, а также о типах данных.
Медленная производительность по подобному запросу обычно указывает на неоптимальный план доступа либо потому, что подходящие индексы недоступны, либо не используются. Иногда несоответствие набора символов между типом данных столбца и литеральным типом данных в предикате может сделать индекс «непригодным» для конкретного запроса.
- 1. Разбор огромного CSV и загрузка в MySQL DB
- 2. Оптимизация огромного представления MySQL
- 3. Обработка огромного количества подключения MySQL
- 4. нагрузки огромного SQL дамп MySql
- 5. Запрос MySQL DB ничего не возвращает
- 6. Как сделать многостраничный PHP-запрос mysql db
- 7. запрос данных из mysql db с PHP
- 8. SQL-запрос для проверки пользователей mysql db
- 9. Zend DB запрос с событием MySQL
- 10. Excel: Генерировать SQL-запрос из огромного Excel
- 11. Оптимизирующие djangos последний запрос для огромного множества
- 12. MySQL защищает mysql DB
- 13. Zend_Db: fetchAll() или запрос()/выборки() для огромного количества записей
- 14. разбор огромного файла csv в mysql [python]
- 15. MySQL огромный набор IN для огромного стола
- 16. группа оптимизации запросов огромного стола mysql
- 17. Оптимизация MySQL ВЫБРАТЬ из огромного стола
- 18. Обновление огромного массива данных в MySQL
- 19. Вставка огромного набора данных [PHP, MySQL]
- 20. MySQL DB Level Selection
- 21. Redis обработка огромного набора данных
- 22. Ошибка MySQL db import
- 23. Mondial DB Внутренний запрос
- 24. Cassandra DB - запрос подзаголовка
- 25. Запрос на изменение db
- 26. массивы Монго DB запрос
- 27. Mongo Db оптимизированный запрос
- 28. Монго DB прикован запрос
- 29. PHP-запрос к DB
- 30. Document DB запрос
Попробуйте создать ключ 'index' –
Результат из' SHOW CREATE TABLE mytable' был бы полезен, чтобы определить, существует ли подходящий индекс или нет, и в зависимости от того, какой движок используется, соответствующее индексирование стратегия. Кроме того, вывод из «EXPLAIN SELECT» ... покажет нам план доступа. – spencer7593