Соответствие первого символа в строке цифре или нестандартному символу - PullRequest
0 голосов
/ 21 января 2011

Мне нужно разрешить пользователям просматривать таблицу с> 1 миллионами записей по первой букве в заголовке.

Я хочу, чтобы они могли просматривать каждую букву из A-Z, 0-9 в списке вместе и все остальные символы вместе.

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

Возможно ли это, или мне придется пересмотреть дизайн?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 21 января 2011

Пока есть индекс для «Заголовка», вы должны иметь возможность использовать SQL как select * from myTable where Title like 'A%' (или «B%», «C%» ...)

0 голосов
/ 21 января 2011

Создание ссылок, представляющих каждую букву и цифру.Если щелкнуть эти ссылки, пользователи получат результаты из базы данных, которые начинаются с выбранного символа.

SELECT title FROM table
WHERE LEFT(title,1) = ?Char
ORDER BY title ASC;

Рассмотрите возможность разбиения этих страниц результатов на соответствующие блоки.MySQL позволит вам сделать это с помощью LIMIT

. Эта команда выберет первые 100 записей из требуемой группы символов:

SELECT title FROM table
WHERE LEFT(title,1) = ?Char
ORDER BY title ASC
LIMIT 0, 100;

Эта команда выберет вторые 100 записей из требуемойгруппа символов:

SELECT title FROM table
WHERE LEFT(title,1) = ?Char
ORDER BY title ASC
LIMIT 100, 100;

Согласно вашим комментариям, если вы хотите объединить символы 0-9 без с помощью регулярных выражений, вам нужно будет объединить несколько OR операторов:

SELECT title FROM table
WHERE (
    LEFT(title,1) = '0'
    OR LEFT(title,1) = '1'
    ...
    )
ORDER BY title ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...