Обработка двух ДБ -

Sandr

Guest
Обработка двух ДБ -

Есть задачка -
две таблицы:
1я - id, name, descript
2я - id
Нужно сделать выборку только тех записей из первой таблицы id которых совпадает с id из второй таблицы!
Но !
Вопервых - для постраничного вывода (тоесть желательно блоками по $limit )
А вовторых - с возможностью сортировки по любому из полей таблицы1

C первой задачкой вот разобрался - а вторую никак неосилю!
:confused:
 

Serega

Guest
select * from tab1, tab2 where tab1.id=tab2.id order by tab1.field limit start,quot
нууу, где-то так :)
 

Sandr

Guest
Все так и написал
select * from $table, $table2 WHERE $table.id=$table2.id_parent
но теперь выборка 275 записей - из 1620
длится 14.218sec
притом что выборка всей базы - 1620 записей проходила 1,457sec
как оптимизировать код???????
 

RomikChef

Guest
какая версия mysql?
скорее всего бета, и старая.
оба запроса должны обрабатыватьсяменьше секунды.

Разве что, id - это не первичный игндекс, или база работает на 486 c 8 метрами памяти
 

Sandr

Guest
Правда - Id - не примари
но при попытке создать как примари (ALTER TABLE `mpeg4` ADD PRIMARY KEY (id))
отвечает -"Error: 1171 - All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead"
Но у меня нет ниодной строки пустой в ID????
 

Sandr

Guest
И еще чайниковский вопрос!
Какие лучше всего поля делать для:
ID (4 знака)
Для коротких текстовых (10-30символов)
Для длинных текстовых (500 символов)
Для оч коротких текстовых (4-6 символов)
Для цифровых (4-8цифр)
 

ForJest

- свежая кровь
отвечает -"Error: 1171 - All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key, use UNIQUE instead"
Но у меня нет ниодной строки пустой в ID????
Тебе сначала ID нужно сделать not null. Чтоб поле было not null. Тем же ALTER TABLE.
4 знака это до 9999. Что-то маловато. Может ты имел ввиду 4 байта? Тогда int. Вообще если лучше int. На размере ключа экономить не стоит.
Для коротких текстовых (10-30символов)
Varchar(30)

Для оч коротких текстовых (4-6 символов)
char(6).
Для цифровых (4-8цифр)
тот же int
2147483648 как максимальное значение я думаю тебе хватит.
 

Sandr

Guest
Сделал - примари !
Только все равно выборка - 20 sec :(
Что делать !?????
 
Сверху