Подскажите Оптимально ли составлен запрос:
SELECT *
FROM (
(`tbl_projects`
LEFT JOIN `tbl_files`
ON ((`file_isforType` = 1) AND `file_isforID`=`proj_uid`) )
INNER JOIN `tbl_users`
ON `proj_InitiatorUsrID` = `usr_UID` )
ORDER BY `file_uid` DESC LIMIT 0 , 15
Я прогонял его через EXPLAIN и обнаружил что несмотря на все мои усилия в первой строчке индекс не используется!(
насколько я помню из учебников это плохо. и тип перебора = all -
худший из всех возможных означающий итерацию по каждойбожей записи в этой таблице.
]1 По формуле rows получается 4x1x1 итераций на строку хотя ожидалось бы 1x1x[0..files_count].
То что у меня получилось - это нормально или плохо или хорошо. Я что то не вьеду)
Пожалуйста подкиньте цитат для вразумления или Ваших личных профипояснений почему тут что да как..
view () кспорт sql прилагается tbl_users
tbl_files.sql
tbl_projects.sql
Идея базы простая. задания.
Юзер публикует задание. К заданию подключает или не подключает фотки.
каждое задание имеет юзера-создателя каждое фото имеет задание-хозяина.
не каждый юзер обязан создавать задание не каждое задание имеет файлы.
связь такая на один проект - один юзер - на один проект - от 0 до X файлов
Результат выполнения запроса образно говоря такой:
proj1 | user1 | photo1
proj1 | user1 | photo2
proj1 | user1 | photo3
proj2 | user1 | photo4
proj2 | user1 | photo5
proj3 | user2 | photo6
proj4 | user1 | null
proj5 | user1 | photo7
proj5 | user1 | photo8
proj6 | user2 | null
php код идет сверху вниз строчка за строчкой и соединяет всё это в html
proj1 - user1 - 3 photos
proj2 - user1 - 2 photos
proj3 - user2 - 1 photo
proj4 - user1 - no photos
proj5 - user1 - 2 photos
etc
table_files is build in next logic:
file_uid | file_ownerID | file_isforType| file_isforID
file_uid PRIMARY AI
file_ownerID reference to PRIMARY at table_users
file_isforType- smallint 1..9
indicates type of THING which this file was attached to.
eg
1 = _TheProject as project photo
2 = _TheUserProfile as users photo
3 = _TheMessage as attachment
file_ResourceID - unique id of that very thing, whose type specified in file_isforType.
eg
if (file_isWhatfor=_TheProject) AND (file_ResourceID=3) ->> to the proj#3
if (file_isWhatfor=_TheUserProfile) AND (file_ResourceID=3) ->> to the user#3
if (file_isWhatfor=_TheMessage) AND (file_ResourceID=3) ->> to the msg#3
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Система управления базами данных (СУБД) – это совокупность языковых и программных средств, предназначенных для создания, ведения и совместного...
Собственно форма входа на сайт Вылезает ошибка которая не позволяет выполнить скрипт,не понятно как у меня может быть тип nullКак исправить...
у меня есть форма с текстовым полем, никаких ограничений на возможные вводимые символы нетНо я хочу сделать так, чтобы нельзя было вводить...