|
|
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Вопрос профессионалам: имеет ли практический смысл индекс на boolean или tinyint (c 2мя - 4мя значениями)? Я нутром чую, что расходов на индекс будет много, эффективность низкая. Ситуация такая, есть 5000 тысяч товаров, есть 5 товаров дня. Не хочу создавать для них отдельную таблицу, добавляю флажок с индексом, но спасёт ли? --------------------------------------- Не шалю, никого не трогаю, починяю примус (С) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 13:51 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Нет смысла, т.к. избирательность такого индекса никакая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:10 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Не имеетНет смысла, т.к. избирательность такого индекса никакая и какое решение мне подойдёт лучше? с доп.таблицей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:12 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey FurmanovВопрос профессионалам: имеет ли практический смысл индекс на boolean или tinyint (c 2мя - 4мя значениями)? b-tree индекс в этом случае бессмысленен. Можно рассмотреть bitmap индекс, хотя если такое поле одно, и он скорее всего малоинтересен. Если ситуация такова, что очень много запросов отсекает именно по этому критерию, наилучшим выходом будет партиционирование по этому полю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:37 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey Furmanovс доп.таблицей? В Вашем случае именно это решение будет наилучшим, то есть, просто отдельная таблица со ссылками на товары, а где надо только товары дня тащить - inner join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:51 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовВ Вашем случае именно это решение будет наилучшим, то есть, просто отдельная таблица со ссылками на товары, а где надо только товары дня тащить - inner join. Сереж, Вы серьезно так думаете? Чем же это решение будет наилучшим? Это просто неэффективная сама по себе имитация того самого индекса, который не будет использоваться из-за плохой селективности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:52 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerСереж, Вы серьезно так думаете? Чем же это решение будет наилучшим? Уверен, практика подтверждает это. Это работает следующим образом. Сервер выполняет скан таблицы со ссылками (она маленькая и вся в памяти). Потом линкуется с большой. softwarerЭто просто неэффективная сама по себе имитация того самого индекса, который не будет использоваться из-за плохой селективности. Это нормальное решение для случая, когда решение через индекс не работает, а вовсе не "неэффективная сама по себе имитация того самого индекса". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:56 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerb-tree индекс в этом случае бессмысленен. Можно рассмотреть bitmap индекс, хотя если такое поле одно, и он скорее всего малоинтересен. Если ситуация такова, что очень много запросов отсекает именно по этому критерию, наилучшим выходом будет партиционирование по этому полю. Спасибо, сделал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:59 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовУверен, практика подтверждает это. Хотел бы на это посмотреть. Сергей ВаскецовЭто работает следующим образом. Сервер выполняет скан таблицы со ссылками (она маленькая и вся в памяти). Потом линкуется с большой. И что из этого? Тормоза идут как раз на "линкуется с большой". Индекс тоже небольшой и тоже может быть весь в памяти. Сергей ВаскецовЭто нормальное решение для случая, когда решение через индекс не работает, Почему же оно не работает? Сергей Васкецова вовсе не "неэффективная сама по себе имитация того самого индекса". Хм. Давайте так. На текущий момент - я уверен, что в описанной ситуации если заставить работать через индекс (например, хинтом) это будет эффективнее, нежели работать описанным образом. Сейчас подготовлю пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:00 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey FurmanovСпасибо, сделал так: надеюсь, я понял правильно К тому, что говорил я, это отношения не имеет. Это решение, о котором говорит Сергей, и которое по моему разумению будет менее эффективно чем индекс и чем просто доступ к основной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:03 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey FurmanovСитуация такая, есть 5000 тысяч товаров, есть 5 товаров дня. Cтоп! Упустил из вида, что у вас перекошенная статистика. В этом случае индекс - самое оно, хотя надо посмотреть, как в вашем сервере построить его так, чтобы он правильно использовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:05 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerК тому, что говорил я, это отношения не имеет. Это решение, о котором говорит Сергей, и которое по моему разумению будет менее эффективно чем индекс и чем просто доступ к основной таблице. прошу прощения, а что есть "партиционирование" и где можно прочитать об этом? я посчитать что это и есть партиционирование... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:10 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarer Alexey FurmanovСитуация такая, есть 5000 тысяч товаров, есть 5 товаров дня. Cтоп! Упустил из вида, что у вас перекошенная статистика. В этом случае индекс - самое оно, хотя надо посмотреть, как в вашем сервере построить его так, чтобы он правильно использовался. MySQL 5.0.45 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:13 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerНа текущий момент - я уверен, что в описанной ситуации если заставить работать через индекс (например, хинтом) это будет эффективнее, нежели работать описанным образом. Сейчас подготовлю пример. Допускаю, что на ORACLE это так и будет. Я бы на месте автора озаботился спецификой конкретного его сервера (например, имеет ли сервер право игнорировать хинт), набросав врукопашную пару примеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:14 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Скажем, вот пример для Oracle, который показывает, что решение с индексом будет эффективнее. Код: plaintext 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. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:15 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Вдогонку. softwarerТормоза идут как раз на "линкуется с большой". Да нет, будет что-нибудь типа банального позиционирования по первичному ключу (не готов сходу написать, как это в планах ORACLE пишется). softwarerИндекс тоже небольшой и тоже может быть весь в памяти. Как раз я согласен, тут могут быть особенности ORACLE-а работы с NULL-ами в индексах. Если это не так, и индекс большой, то серверу его использовать смысла будет мало, в отличие от варианта с крошечной таблицей, пусть там даже будет "страшный" фул скан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:19 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовДопускаю, что на ORACLE это так и будет. Я уверен, что так будет на любом сервере. Потому что "таблица со списком id" - это фактически и есть индекс, только реализованный... необычным образом. Там, где это решение будет эффективным - трудно представить себе, что индекс будет неэффективным, и наоборот. Сергей ВаскецовЯ бы на месте автора озаботился спецификой конкретного его сервера Это безусловно. Надо идти в гугль и смотреть, как в конкретном сервере делать индексы по полю с перекошенным распределением значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:20 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовВдогонку. softwarerТормоза идут как раз на "линкуется с большой". Да нет, будет что-нибудь типа банального позиционирования по первичному ключу (не готов сходу написать, как это в планах ORACLE пишется). Хм. Если я Вас правильно понял, мы говорим ровно об одном и том же. Сергей ВаскецовКак раз я согласен, тут могут быть особенности ORACLE-а работы с NULL-ами в индексах. Это тут незначимо. Так, как я написал, мы получим плюс в размере индекса - не хранятся данные для "неинтересных" строк. На скорость выборки по этому индексу работа с null-ами влияния не окажет - мы ведь делаем не full scan индекса, а range scan. Сергей ВаскецовЕсли это не так, и индекс большой, то серверу его использовать смысла будет мало Почему? Будет все то же самое - интересные блоки из этого индекса будут закешированы в памяти, а все прочее нехай себе валяется на диске, только места займет больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:23 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerЭто безусловно. Надо идти в гугль и смотреть, как в конкретном сервере делать индексы по полю с перекошенным распределением значений. Сенкс, идея ясна, доп.таблица - лучше чем кривые индексы, индексы - правильнее, но нужно знать, как правильно настроить... пошёл в гугль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:24 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerЯ уверен, что так будет на любом сервере. Потому что "таблица со списком id" - это фактически и есть индекс, только реализованный... необычным образом Попробуйте поле флага заполнить "N" для всех остальных значений, кроме "Y", и повторить эксперимент. Этим Вы увеличите размер индекса, так что ситуация изменится. Я не знаю, как MySQL 5.0.45 строит индексы по полям, где почти все значения NULL, возможно, будет также, как в Вашем примере (и тогда с индексом проще). Но может быть и обратная ситуация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:26 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey Furmanovпрошу прощения, а что есть "партиционирование" и где можно прочитать об этом? http://www.google.ru/search?hl=ru&q=mysql+partitioning&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=0&oq=mysql+partition ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:26 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey Furmanovкак правильно настроить... пошёл в гугль Если подумать над постановкой самой задачи, я бы вообще признаки, что товар в "товарах дня" не пихал в таблицу товаров. Это в точности то же самое, как не так давно обсуждаемая тема с нумерацией товаров в прайслистах и всяких рекламных акциях. Лучше сделать отдельный заголовок (где хранить диапазон дат и прочую фигню), и к нему состав с перечнем товаров. Все равно "товар дня" обычно не просто так возникает, могут быть скидки всякие, печать перечня товаров дня (в том числе и на завтра при действующем сегодня старом перечне товаров дня) и прочие вкусности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:32 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Сергей ВаскецовПопробуйте поле флага заполнить "N" для всех остальных значений, кроме "Y", и повторить эксперимент. Этим Вы увеличите размер индекса, так что ситуация изменится. Изменится крайне незначительно. Увеличился глубина индекса, так что придется читать на один-два блока больше. Но показанное соотношение логических чтений (в два с лишним раза) останется как есть. Собственно, без проблем. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:32 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerИзменится крайне незначительно Спасибо. Я в общем-то так и думал, если честно, зная умение ORACLE работать с индексами. Автору рекомендую повторить Ваш эксперимент у себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:36 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов softwarerИзменится крайне незначительно Спасибо. Я в общем-то так и думал, если честно, зная умение ORACLE работать с индексами. Автору рекомендую повторить Ваш эксперимент у себя. К сожалению, вопрос решился сам собой, на серверах установлен MySQL без поддержки партишионинга (ну а хостеру его включить, конечно же, тяжелее, чем мне использовать еханизм с доп.таблицей), маразм победил разум :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:42 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Partitioning тут не при чем. Это решение для другого случая - когда например у вас из 5000 товаров 2000 актуальных и 3000 "архивных". Виноват, при первом прочтении обратил внимание на логический признак, но пропустил информацию про перекос. При соотношении 5/5000 партиционирование.. необязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:46 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarerPartitioning тут не при чем. Это решение для другого случая - когда например у вас из 5000 товаров 2000 актуальных и 3000 "архивных". Виноват, при первом прочтении обратил внимание на логический признак, но пропустил информацию про перекос. При соотношении 5/5000 партиционирование.. необязательно. понял, сейчас попробую поэкспериментировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:49 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey Furmanov пишет: > Вопрос профессионалам: имеет ли практический смысл индекс на boolean или > tinyint (c 2мя - 4мя значениями)? Нет, не имеет. Я нутром чую, что расходов на индекс > будет много, эффективность низкая. Ситуация такая, есть 5000 тысяч > товаров, есть 5 товаров дня. Не хочу создавать для них отдельную > таблицу, добавляю флажок с индексом, но спасёт ли? ну здесь бы индекс конечно помог выборке, но дело в том, что отношение накладухи к полезности дейтсвительно очень большое. Поэтому лучше бы действительно сделать просто отдельный список этих товаров дня - в отдельной маленькой таблице. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 18:18 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
MasterZivну здесь бы индекс конечно помог выборке, но дело в том, что отношение накладухи к полезности дейтсвительно очень большое. Какое именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 18:47 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
MasterZivAlexey Furmanov пишет: > Вопрос профессионалам: имеет ли практический смысл индекс на boolean или > tinyint (c 2мя - 4мя значениями)? Нет, не имеет. Вообще говоря - имеет, если одно значение встречается гораздо чаще других и требуется производить поиск по "редким" значениям. Над индексом стоит задумываться, когда отношение "часто" встречающегося значения к "редким" достигает порядка 50:1 (зависит от используемой СУБД). Есть еще один вариант - использование такого поля в составном индексе в случае, если индекс является покрывающим для запроса (тоже зависит от того, умеет ли СУБД так использовать индексы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 19:05 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarer пишет: > Сереж, Вы серьезно так думаете? Чем же это решение будет наилучшим? Это > просто неэффективная сама по себе имитация того самого индекса, который > не будет использоваться из-за плохой селективности. А что плохого-то в имитации индекса, который не будет использоваться ? (что он не будет использоваться - это кстати еще бабушка надвое сказала) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 20:15 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarer пишет: > Cтоп! Упустил из вида, что у вас перекошенная статистика. В этом случае > индекс - самое оно, хотя надо посмотреть, как в вашем сервере построить Индекс - не самое оно не по этому, а потому, что 98% этого индекса не будут использоваться. А 1-2 страницы маленькой таблицы будут очень эффективно делать то же самое, что и здоровенный индекс в несколько тысяч страниц. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 20:17 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarer пишет: > Какое именно? Этот самый индекс, который предлагается сделать. По полю is_product_of_the_day. При выборке по условию is_product_of_the_day = YES Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 20:20 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
MasterZivА 1-2 страницы маленькой таблицы будут очень эффективно делать то же самое, что и здоровенный индекс в несколько тысяч страниц. Ну-ну. Дисковое пространство нынче стоит 20-30 центов за гигабайт. Этот страшный индекс в цене вряд ли вылезет за 5 центов даже если в MySQL нет способа избежать этих гигантских трат. "Маленькая таблица" будет делать не "очень эффективно", а "медленнее, чем индекс" - потому что потребуется лишняя операция - и стоимость этого "медленно" будет нарастать по мере того, как магазин набирает обороты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 20:30 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarer Alexey FurmanovСитуация такая, есть 5000 тысяч товаров, есть 5 товаров дня. Cтоп! Упустил из вида, что у вас перекошенная статистика. В этом случае индекс - самое оно, хотя надо посмотреть, как в вашем сервере построить его так, чтобы он правильно использовался. Индекс будет очень полезен для поиска именно этих 5ти товаров среди 5000 прочих товаров. Хотя может быть экономичнее просто завести табличку в которую скопировать эти 5 товаров дня и ежедневно обновлять её. boolean поля не очень полезны. В твоём случае вместо boolean можно добавить поле типа date, в котором указывать дату, в течении которой данный товар являлся товаром дня или что нибудь в этом роде. Используя эту дату можно будет легко находить какой товар сегодня есть товар дня, ну и частично получать данные о том, какие товары бывали в этой категории и когда это сучалось в последний раз. Т.е. развернуть значения TRUE и FALSE в более информативные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 00:43 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey Furmanov Не имеетНет смысла, т.к. избирательность такого индекса никакая и какое решение мне подойдёт лучше? с доп.таблицей? Индексированное представление? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 08:36 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
В МССКЛ использование сабжа иногда даёт хороший эффект, но........ в МССКЛ индекс с булеан возможен только составной и только не на первом месте. Но эффект есть..... Так что не надо ля-ля про селективность... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 10:25 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarer пишет: > Ну-ну. Дисковое пространство нынче стоит 20-30 центов за гигабайт. Этот > страшный индекс в цене вряд ли вылезет за 5 центов даже если в MySQL нет > способа избежать этих гигантских трат. Это - аргументы в пользу бедных. Мне это не интересно. "Маленькая таблица" будет делать > не "очень эффективно", а "медленнее, чем индекс" - потому что > потребуется лишняя операция - и стоимость этого "медленно" будет > нарастать по мере того, как магазин набирает обороты. Ты сам-то понял, что написал ? Теперь - прочитай и подумай. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 14:00 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
LSV пишет: > В МССКЛ использование сабжа иногда даёт хороший эффект, но........ > в МССКЛ индекс с булеан возможен только составной и только не на первом > месте. boolean можно представлять не только типом bit. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 14:02 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто - аргументы в пользу бедных. Мне это не интересно. Охотно верю. "Вау! Сэкономим пять центов. Ухудшить масштабируемость - неинтересно, фигня, аргумент для бедных. Нормальные пацаны купят крутой сервер". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 14:15 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
наконец-то дошли руки... структура данных: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. результат: 12:53:09.605 12:53:35.789 12:54:01.176 итого по скорости: с доп.таблицей: 26.184 с с индексом: 25.384 с (быстрее на 0,797 с, т.е. на ~3%) по объёму занимаемых данных: T_PRODUCT (100000 записей; Данные: 3,600 КБ; Индексы[2шт]: 1,552 КБ), т.е. 1,552/2 = 776 К накладных расходов (больше в ~47 раз) T_PRODUCT_OF_DAY (100 записей; Данные: 16,384 байт), т.е. 16К накладных расходов Резюме: оба подхода, в данном случае, практически идентичны по производительности, доп.таблицы эффективнее по расходу дискового пространства, но несколько сложнее в использовании. Эксперимент не учитывал влияние возможных потерь производительности, связанных с использованием языка PHP (интерпретация, библиотеки и т.п.). Если есть замечания - с удовольствием учту и проведу эксперимент повторно. --------------------------------------- Молодёжный научный семинар по во вопросам надёжности и гарантоспособности ПО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 14:25 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey Furmanov 1. Скорее всего, данные у Вас при эксперименте целиком лежали в кэше. Не факт, что это будет соответствовать реальной картине (хотя зависит от размера базы) 2. Здесь существенен фактор нагрузки. Я не проводил натурных испытаний именно чтобы не морочиться с этим аспектом. Думаю, если подадите на сервер адекватную реальную нагрузку, разница будет куда весомее (за счет синхронизаций при параллельном доступе к данным от многих процессов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 14:59 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
LSVв МССКЛ индекс с булеан возможен только составной и только не на первом месте.О как. Вы о типе bit ? А в MS об этом знают ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 15:30 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
LSVВ МССКЛ использование сабжа иногда даёт хороший эффект, но........ в МССКЛ индекс с булеан возможен только составной и только не на первом месте. Но эффект есть..... Так что не надо ля-ля про селективность...Можно в МССКЛ делать индекс на бит. И для таких случаев, о которых пишут (типа очереди на обработку из нескольких записей) вполне применимо - индекс используется. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 15:40 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
softwarer1. Скорее всего, данные у Вас при эксперименте целиком лежали в кэше. Не факт, что это будет соответствовать реальной картине (хотя зависит от размера базы) у меня заявлено 5 тысяч номенклатуры товаров, если они все будут влазить в кеш (а я уверен, что будут, на хостинге с не очень большой нагрузкой, имеется сервак MySQL с 8Г памяти), то я с задачей справился softwarer2. Здесь существенен фактор нагрузки. Я не проводил натурных испытаний именно чтобы не морочиться с этим аспектом. Думаю, если подадите на сервер адекватную реальную нагрузку, разница будет куда весомее (за счет синхронизаций при параллельном доступе к данным от многих процессов). да, согласен, стоило бы потестировать в несколько потоков, например командочкой ab, жаль, нет времени этим заниматься... я для себя обозначил оба механизма как равнозначные, выбрал флажок с индексом из-за простоты использования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 21:17 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
mcureenabboolean поля не очень полезны. В твоём случае вместо boolean можно добавить поле типа date, в котором указывать дату, в течении которой данный товар являлся товаром дня или что нибудь в этом роде. Используя эту дату можно будет легко находить какой товар сегодня есть товар дня, ну и частично получать данные о том, какие товары бывали в этой категории и когда это сучалось в последний раз. Т.е. развернуть значения TRUE и FALSE в более информативные. не имеет смысла влазить в логику задачи, вопрос был более конкретным... если интересно, то товары дня задаются вручную, никакой автоматики и алгоритмов, не верьте названию, товаром дня является тот товар, который нужно срочно продать/прорекламировать дополнительно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2008, 21:47 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
Alexey Furmanov не имеет смысла влазить в логику задачи, вопрос был более конкретным... если интересно, то товары дня задаются вручную, никакой автоматики и алгоритмов, не верьте названию, товаром дня является тот товар, который нужно срочно продать/прорекламировать дополнительно ;) Тем более! Имея развёрнутое поле вы сможете заранее помечать товар дня на завтра, а не сидеть и не ждать, когда сегодняшний товар дня нужно будет заменить товаром дня грядущего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 05:03 |
|
||
|
Имеет ли смысл индекс на boolean?
|
|||
|---|---|---|---|
|
#18+
mcureenabИмея развёрнутое поле вы сможете заранее помечать товар дня на завтра, а не сидеть и не ждать, когда сегодняшний товар дня нужно будет заменить товаром дня грядущего. Только поле типа даты также с трудом подходит для этого, потому что несколько дат туда не впихнуть. Именно поэтому решение я писал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 13:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543920]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
105ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 560ms |

| 0 / 0 |
