|
|
|
Имеет ли смысл индекс на 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?fid=32&msg=35260277&tid=1543920]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 494ms |

| 0 / 0 |
