|
|
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток уважаемые форумчане. Прошу помощи в доработке EAV. Имеем упрощенную таблицу основных записей. упрощенная схема хранения Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. В чистом виде данные характеристик [img] http://clip2net.com/clip/m0/1389792562-clip-7kb.png?nocache=1 [/img] Теперь собственно проблема, необходимо выбрать нужные ID при поиске по этой таблице. Делаем запрос Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. пытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Этот запрос работает, но он работает на расширение поиска а не на сужение. То есть чем больше галочек в фильтре поставить, тем больше блоков OR будет добавлено и в выборку попадет большее количество записей. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Если же поставить между двумя выборками характеристик AND естествено ничего не найдется. Собственно в этом и вопрос, как построить запрос с обратной логикой поиска, чем больше характеристик в запросе, тем больше сужается выдача. Заранее благодарен за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:07:58 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Забыл дамп прикрепить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:09:40 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proпытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Да щазз! Шаблон: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:19:14 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina, Возможно это хорошо ) но я вообще ничего не понял из того что вы написали, если не сложно, используйте названия таблиц из дампа. Вообще ничего не понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:24:50 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
AkinaШаблон:Да уж больно медленный шаблон-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:26:48 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:44:26 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinafolder-proпытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Да щазз! Шаблон: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. непонятно что за поле av_pairs_count и что выдаст запрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:45:22 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-pro Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. как доработать его, чтобы заработало, сейчас выдает null вместо av_pairs_count подставлено 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:48:29 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
miksoft, Вы предлагаете на каждый тип товара отдельную таблицу? скажем 500 типов товаров, и 500+ таблиц где будут храниться характеристики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:49:43 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-promiksoft, Вы предлагаете на каждый тип товара отдельную таблицу? скажем 500 типов товаров, и 500+ таблиц где будут храниться характеристики?В данный момент не предлагаю. Чтобы предлагать такие вещи, нужно очень хорошо знать задачу, что малореально в формате форума. Хотя, теоретически, и в 500 таблицах ничего страшного не вижу. Я говорил и именно о самом запросе в рамках текущей ситуации. Уж хотя бы WHERE можно было бы добавить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 18:57:48 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
miksoftAkinaШаблон:Да уж больно медленный шаблон-то... Конечно, это же идея, а не реализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 19:04:26 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinamiksoftпропущено... Да уж больно медленный шаблон-то... Конечно, это же идея, а не реализация. Если предложили этот вариант, может объясните его суть? ибо вопрос не решен пока что... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 20:51:34 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
miksoft, Суть проекта. есть доска объявлений - каталог товаров, у объявлений есть характеристики, у каждого раздела свои, "по типу яндекс маркета". фильтров будет не мало, думаю до 500 шт. Изначально думал использовать вариант 1 тип - 1 таблица хранения характеристик, с редактором характеристик который меняет таблицу. Но плодить большое количество таблиц как то показалось страшным. записей основной таблицы будет в районе 500 000 шт. если предположить что у каждого товара будет по 16 характеристик, то таблица jos_md_catalog_message_criterions будет содержать порядка 8 000 000 записей. что в такой ситуации вы могли бы предложить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 20:59:42 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Так Вы же суть поймали и составили в общем верный запрос... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. Если запрос даёт NULL - либо нет запрошенных данных, либо есть дубликаты, либо ты в запросе таки накосячил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:10:29 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina, нет не накосячил, я просто не мог его суть понять и что там делает av_pairs_count теперь суть понятна, спасибо. У вас под рукой нет случайно статей на манипуляцию с этим шаблоном? Или может быть ссыль на книгу "на русском", где подобная техника более подробно описывается? из того что нагуглил, особо разобраться не смог ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:20:47 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina, да и IN откуда взялось, в первом ответе было другое ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:22:59 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinafolder-proпытаясь найти записи у которых есть характеристика 4 с ID значения 13 и 25 с ID значения 95 Да щазз! Шаблон: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Лучше всё же Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 21:58:26 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proУ вас под рукой нет случайно статей на манипуляцию с этим шаблоном?Да я его прямо тут от руки набросал... какие нахрен статьи ещё. Потому, кстати, и дорабатываю, в частности folder-proда и IN откуда взялось, в первом ответе было другое ) это по сути абсолютно то же самое, просто запись более читабельная. MasterZivЛучше всё же Тогда уж Код: sql 1. Но мой шаблон гораздо удобнее при неопределённом количестве пар... а если начнётся огород типа "эти две пары обязательно, из вон тех пяти пар должно быть не менее трёх, а этих двух быть не должно", то он вообще становится чертовски привлекательным.... К слову, для моего шаблона, если в таблице есть подходящий индекс (в коем поля идут в правильном порядке) - он будет использоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 23:47:18 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
MasterZivЛучше всё же Тогда уж Код: sql 1. разницы 0. Но мой шаблон гораздо удобнее при неопределённом количестве пар... а если не думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 12:12:40 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
MasterZiv , мне во всяком случае было бы удобнее, буде у меня возникла бы задачиа динамического построения текста запроса. В коде - и удобнее, и проще, отдельно условие, отдельно критерий, отдельно литералы сравнения, ничего не перемешано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 12:33:07 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akina MasterZiv , мне во всяком случае было бы удобнее, Согласись, это далеко не самый важный критерий оценки текста запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 13:22:25 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Akinafolder-proУ вас под рукой нет случайно статей на манипуляцию с этим шаблоном?Да я его прямо тут от руки набросал... какие нахрен статьи ещё. Потому, кстати, и дорабатываю, в частности folder-proда и IN откуда взялось, в первом ответе было другое ) это по сути абсолютно то же самое, просто запись более читабельная. MasterZivЛучше всё же Тогда уж Код: sql 1. Но мой шаблон гораздо удобнее при неопределённом количестве пар... а если начнётся огород типа "эти две пары обязательно, из вон тех пяти пар должно быть не менее трёх, а этих двух быть не должно", то он вообще становится чертовски привлекательным.... К слову, для моего шаблона, если в таблице есть подходящий индекс (в коем поля идут в правильном порядке) - он будет использоваться. сгенерил таблицу на 11000 характеристик для 2000 товаров, ваш запрос не желает индексы использовать... подскажите как их правильно создать тогда, индексы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 13:47:49 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:07:37 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proсгенерил таблицу на 11000 характеристик для 2000 товаров, ваш запрос не желает индексы использовать... Ага... possible keys IS NULL - а где подходящий индекс-то? трудно использовать то, чего нет. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:28:40 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
http://sqlfiddle.com/#!2/5e97c/1 Код: sql 1. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ID SELECT_TYPE TABLE TYPE POSSIBLE_KEYS KEY KEY_LEN REF ROWS FILTERED EXTRA1SIMPLEjos_md_catalog_message_criterionsindexid_nm_val154100Using where; Using index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:44:39 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
или даже так: ( http://sqlfiddle.com/#!2/a830f/1 ) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 14:58:25 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
сгенерил таблицу на 11000 характеристик для 2000 товаров, ваш запрос не желает индексы использовать... А ты видишь в этом запросе слово WHERE ? Запросы используют индексы, когда в WHERE что-то написано. Я ж ему говорил, что так лучше. А он -- "удобно, удобно " подскажите как их правильно создать тогда, индексы Надо не индексы правильно создавать, а запросы правильно писать. Индексы надо создавать на значение и тип свойства . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 16:21:14 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Уточнение: защита от дублей (предполагается, что фильтруемые значения выбираются однократно) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 17:40:32 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, да индексы на этом вложенном запросе заработали. но зависание на 62 секунды так и осталось) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 17:59:49 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-pro , вам уже отвечали ранее 15425584 , что индексы не работают после группировки. попробуйте добавить фильтр в запрос (перед группировкой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:02:23 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
можете так же сравнить обведенное рамкой с примером из 15424973 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:06:03 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
В общем наконец то заработало. Не идеально конечно, но уже хоть что то. вопрос остается открытым по последнему эксплайну, кто что скажет, можно ли как то улучшить ситуацию с работой по индексам? например если взять основную таблицу в которой например будет 250 000 записей, и по 10 характеристик на один товар, получим перебор таблицы в которой 2 500 000 записей и джойн ее хоть и по PK к таблице в которой 250 000 записей. при этом еще и Using temporary; Using filesort ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:40:37 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Cygapb-007можете так же сравнить обведенное рамкой с примером из 15424973 Да да конечно я это заметил. WHERE (`id_criterions_name`,`id_criterions_values`) in ( (4,13),(25,93) ) но вот кроме добавленного в эксплайн Using where; Using index вместо Using index без этого предиката, я разницы пока не увидел или не догнал в чем она... что там что там в строке rows 11500 записей, и для примера выше там будет 2 500 000... и как с этим жить пока не понимаю. php/.NET/VB я программист, а не SQL гуру, посему мне трудно дается это, прошу пояснить если не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:45:47 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
еще раз: группировка обрабатывает все отобранные записи таблицы (сортирует, затем вычисляет аггрегатные функции), и только потом проверяет вычисленные значения. фильтр WHERE использует индекс для эффективного отбора значений, которые потом нужно как-то обработать. Хотя если не видно разницы - то и мне и тем более все равно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:55:19 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Cygapb-007еще раз: группировка обрабатывает все отобранные записи таблицы (сортирует, затем вычисляет аггрегатные функции), и только потом проверяет вычисленные значения. фильтр WHERE использует индекс для эффективного отбора значений, которые потом нужно как-то обработать. Хотя если не видно разницы - то и мне и тем более все равно Другими словами, разница будет видна в скорости работы запроса когда там будет 2 500 000 записей? а не 12 000. я понимаю что есть разница с where и без него, только вот не понимаю меняется ли последовательность обработки этого запроса или нет, и как это в эксплайн увидеть... Не вижу я ее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 23:20:33 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proНе вижу я ее :)explain.rows должно уменьшаться при наличии where Впрочем, у ва всего 12к записей, может, оптимизатор посчитал выгодней прочитать их все, не дёргая ещё и индекс. Сделайте 120к записей и повторите эксперимент - rows должно отличаться. Akina Код: sql 1. Если разных атрибутов будет много, то может быть, выгодней будет idx1 on eav(attrib, val, entity). Можно будет читать даже не весь индекс, а только часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 06:21:10 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
tanglirЕсли разных атрибутов будет много, то может быть, выгодней будет idx1 on eav(attrib, val, entity). Можно будет читать даже не весь индекс, а только часть.Я демонстрирорвал только факт, что индекс МОЖЕТ ИСПОЛЬЗОВАТЬСЯ. Оптимизация его использования - это значительно более следующий этап. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 08:50:30 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
tanglirfolder-proНе вижу я ее :)explain.rows должно уменьшаться при наличии where Впрочем, у ва всего 12к записей, может, оптимизатор посчитал выгодней прочитать их все, не дёргая ещё и индекс. Сделайте 120к записей и повторите эксперимент - rows должно отличаться. Akina Код: sql 1. Если разных атрибутов будет много, то может быть, выгодней будет idx1 on eav(attrib, val, entity). Можно будет читать даже не весь индекс, а только часть. для того чтобы оптимизатор сам выбрал какой индекс использовать (на время экспериментов), ранее были сделаны такие варианты. он использует тот что по трем полям. Огромное всем спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 09:58:54 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-pro, ну всё-таки попробуйте (name,value,id). Только не на 12к записей. Хотя если name достаточно редкое, то можно и так попробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 10:06:47 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
tanglirfolder-pro, ну всё-таки попробуйте (name,value,id). Только не на 12к записей. Хотя если name достаточно редкое, то можно и так попробовать.группировка предполагает предварительную сортировку по id, поэтому вряд ли id в конце индекса будет эффективнее... хотя решать оптимизатору ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 10:10:35 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, этот индекс - для случая, когда where отбирает относительно мало дынных. Проще ведь прочитать 100 записей из индекса, чем весь индекс :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 10:23:50 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
tanglirCygapb-007, этот индекс - для случая, когда where отбирает относительно мало дынных. Проще ведь прочитать 100 записей из индекса, чем весь индекс :)А, в смысле - покрывающий индекс (on (name, val) include (mess_id))... Согласен, этот индекс может оказаться эффективнее. Хотя фильтрация индекса все равно может оказаться эффективнее отбора фрагментов индекса и сортировки результата... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 12:43:35 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, может. Тут уже ТСу самому смотреть надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 12:45:24 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 15:47:39 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
tanglirfolder-pro, ну всё-таки попробуйте (name,value,id). Только не на 12к записей. Хотя если name достаточно редкое, то можно и так попробовать. удалил все индексы создал id, id_criterions_name, id_criterions_values вместо 0,047 сек стало 0,015 сек в rows остались теже 69000 к тому же Using where; Using temporary; Using filesort вместо Using where; Using index; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 15:54:38 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, еще бы синтаксис знать того что вы предложили... ALTER TABLE `jos_md_catalog_message_criterions` ADD INDEX `ggg` USING BTREE ( ON ( `id_criterions_name`, `id_criterions_values` ) include(message_id) ) в чем ошибка тут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:15:17 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proCygapb-007, еще бы синтаксис знать того что вы предложили... ALTER TABLE `jos_md_catalog_message_criterions` ADD INDEX `ggg` USING BTREE ( ON ( `id_criterions_name`, `id_criterions_values` ) include(message_id) ) в чем ошибка тут?Предложил не я :), include() - это вообще из MS SQL, в MySQL такого нет. Покрывающий индекс (для этого запроса) в MySQL - (`id_criterions_name`, `id_criterions_values`, `message_id`) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:19:26 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Маленькая ремарка: если в запросе есть поля, отсутствующие в индексе, то для получения их значения применяется операция KeyLookup - выборка недостающих данных из таблицы по первичному ключу. если индекс покрывающий (т.е. все поля, задействованные в запросе, содержатся в индексе), то и чтения из таблицы не требуется. первичный ключ содержится в любом индексе и дублировать его смысла нет Пример из MS SQL: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:36:10 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, перепробовал кучу комбинаций и перестановок... варианты которые юзает мускуль message_id, id_criterions_name, id_criterions_values даже удалил PK на всякий случай (чтобы не грешили на него в операциях группировки и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:46:22 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 16:55:13 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
folder-proДамп таблицы http://clip2net.com/s/6CcIHY Если интересно, вот на этих данных результаты из MS SQL :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 19:41:49 |
|
||
|
Модель EAV (сущность - характеристики)
|
|||
|---|---|---|---|
|
#18+
Эээ... картинки не прицепились... Одну все же вставлю, иначе смысла не было публиковать:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 19:43:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1835382]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 347ms |

| 0 / 0 |
