Как узнать имя последней таблицы в базе

  • Автор темы Автор темы Patrul
  • Дата начала Дата начала

Patrul

Новичок
Как узнать имя последней таблицы в базе

Здравствуйте.
Ситуация следующая:
имеется база данных: A
В ней есть таблицы с именами: 1, 2, 3, 6, 8

Можно ли узнать имя таблицы с наибольшим числовым именем, не используя перебор всех таблиц вот так:
PHP:
$kolvo = mysql_num_rows(mysql_list_tables('A'));
$res = mysql_list_tables('A');
while($row = mysql_fetch_array($res))
{
...//Здесь сравнивать имена таблиц
}

Этот метод работать конечно будет, но боюсь, что если будет порядка 10 тыс. таблиц процесс затянется надолго.
 
Это вам не надо.

Опишите задачу которую вы решаете.
 
:) хороший ответ
Задача:
можно назвать это создание движка форума, для каждой новой темы создается своя таблица с именем - следующим порядковым номером в базе.
Мне нужно узнать какое имя присвоить следующей таблице.

Возможно проще вести таблицу с именами таблиц и из нее выбирать сортировкой с конца 1 значение?
 
>> для каждой новой темы создается своя таблица с именем - следующим порядковым номером в базе

/me в шоке !!!

>> Может вы тогда напишите что мне надо?
Боюсь, что менять профессию!
 
Patrul
Посмотрите как реализована
БД в SMF ну или phpBB форумах.
 
седня даже не пятница... :\

-~{}~ 16.08.07 23:31:

Patrul
а что, собственно, мешает Вам хранить все темы в одной таблице?

Вы даже не представляете, насколько.
 
посмотрел на SMF там есть таблица с id тем
и одна таблица со всеми сообщениями, в которых есть столбец с родительским id.

Примерно такая структура мне и представлялась.
Но почему я не хочу делать так:
Мне кажется, что выбирать одно сообщение из 10000 (1000 тем по 10 сообщений в каждой) из одной таблицы займет больше времени чем выбирать 1 сообщение из 10? Или я не прав?
 
ok С этим понял.
Еще вопрос:
для отбора
PHP:
like '%..%'
до 10 млн. строк будет считаться рабочим состоянием?

PS: это для поиска
 
Patrul
если просто сделать выборку
select * from {одна большая таблица} where ... like '%..%'
, то оно будет все равно быстрее, чем если сделать много запросов вида
select * from {каждая из Ваших таблиц по порядку} where ... like '%..%'.

А поиск обычно делают по-другому.
 
с этим я согласен, и уже решил пихать все в одну таблицу.

Меня все таки интересует скорость like '%...%' справится ли он с таблицей хотя бы 10000 строк, если эта таблица будет около 300 мб?
 
Patrul
Не справится, так же, как не справился бы в случае с поиском по всем изначальным таблицам по очереди. Если же такой вот замысловатый поиск нужно ограничить только одной веткой, то базе будет намного легче, т.к. она сможет своими эффективными методами выделить только одну тему, и искать медленным like'ом только по 10-и записам.

Хотя, еще раз скажу, что like'ом нынче искать не принято. Может стоит почитать про полнотекстовый поиск, которые гораздо правильнее и эффективнее?
 
Всем спасибо. Ответы получил. Т.е. уложились в дурной голове ;)
 
Сверху