У меня есть таблица из двух строк, относящаяся к числу, и это число куб. Сейчас у меня около 13 миллионов вставленных чисел, и это очень быстро, очень быстро.
Есть ли более быстрый способ вывода простых таблиц быстрее, чем с помощью команды типа SELECT * FROM table
?
Мой второй вопрос относится к выбору диапазона чисел. Как указано выше, у меня есть большая база данных, которая очень быстро растет, чтобы удерживать числа и их кубы. Если вам интересно, я пытаюсь найти 3 числа, которые суммируются до 33 при кубике. Таким образом, я делаю это, используя сервер/клиентскую программу для отправки диапазона чисел клиенту, чтобы они могли выполнять уравнения на указанном диапазоне чисел.
Так, например, скажем, что первый клиент звонит. Я даю ему диапазон 0, 100. Он, чем уходит, вычисляет числа и сообщает, чтобы сообщить серверу, нашел ли он триплет. Если он этого не сделал, цикл продолжится.
Когда клиент делает вычисления для чисел сам по себе, он идет очень медленно. Итак, я решил использовать базу данных для хранения кубированных чисел, чтобы клиент не выполнял вычисления. Проблема в том, что я не знаю, как получить доступ только к диапазону чисел. Например, если клиент имел диапазон 0-100, ему нужно было бы получить доступ к кубам всех чисел от 0 до 100.
Что такое команда выбора, которая вернет диапазон чисел?
Я использую для таблицы MyISAM.
Если ваша таблица "mytable" имеет два столбца
number cube
0 0
1 1
2 8
3 27
команда запроса будет (Предполагая, что начало диапазона 100, а конец 200):
select number, cube from mytable where number between 100 and 200 order by number;
Если вы хотите, чтобы этот запрос был как можно быстрее, убедитесь в следующем:
Конечно, добавление индекса сделает запись в таблицу немного медленнее. Кроме того, я предполагаю, что вы пишете в таблицу по порядку (то есть 0,1,2,3,4 и т.д. Не 10,5, 100,3 и т.д.). Записи в таблицах с кластеризованными индексами очень медленны, если вы пишете в таблицу в случайном порядке (поскольку БД должна сохранять движущиеся записи в соответствии с новыми).
between-where
в индексе или использование limit-offset
).
SELECT *
не рекомендуется, поскольку запрос может зависать в зависимости от типов данных (IE: BLOB). Выберите только то, что вам нужноLIMIT
иOFFSET
: stackoverflow.com/search?q=mysql+limit