|
Оптимизация sql скрипта
|
|||
---|---|---|---|
#18+
Всем привет! Я не особо глубоко разбираюсь в 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. 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. 104. 105. 106.
Таких записей 10 миллионов. Использую sql запрос для того, чтобы выбрать определённые записи: Суть запроса заключается в том, чтобы показать только те записи где совпало больше 30 искомых чисел с погрешностью +-2 числа Код: 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.
Работает он очень долго. Помогите, пожалуйста его оптимизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2016, 15:21 |
|
Оптимизация sql скрипта
|
|||
---|---|---|---|
#18+
DanyaNugniy, Убери все индексы нафиг, они тут никак не помогут. Попытайся добавить в таблицу поле с уже вычисленным значением для той ужасной формулы. Или несколько таких полей. Можешь воспользоваться триггерами. Читать тут: http://sqlite.org/lang_createtrigger.html Сделать индекс по вычисленному полю/полям. Чтобы итоговый запрос выглядел типа SELECT id FROM Table1 WHERE plus_minus_2>0 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 17:57 |
|
Оптимизация sql скрипта
|
|||
---|---|---|---|
#18+
DanyaNugniy, Что-то не похоже чтобы условие задачи совпадало с вашим запросом. Я понял бы, что нужно выбрать такие записи, если встречаются не менее 30 из 48 значений, которые между собой отличаются не более +/-2. Т.е. числа как-то собираются в "кучки", а не разнесены далеко друг от друга. По вашему же условию, надо найти числа которые в промежутках от -2 до 2, и если такие имеются то, считаем их количество. Так всё же как правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2016, 22:25 |
|
Оптимизация sql скрипта
|
|||
---|---|---|---|
#18+
VSVLAD, Правильно так "Я понял бы, что нужно выбрать такие записи, если встречаются не менее 30 из 48 значений, которые между собой отличаются не более +/-2." В моём случае я проверил и скрипт не правильный. Помогите, пожалуйста, составить правильный и по максимуму оптимизировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 17:00 |
|
Оптимизация sql скрипта
|
|||
---|---|---|---|
#18+
DanyaNugniyВ моём случае я проверил и скрипт не правильный. Помогите, пожалуйста, составить правильныйЧитать учебник по статистике. Ключевые слова - median, box-and-whisker diagram, outliers. DanyaNugniy и по максимуму оптимизировать.Это я уже объяснял. К тому же, ты используешь SQLite (надеюсь это был осознанный выбор?), а значит и не все что можно, нужно считать в SQL, часть расчетов можно и в Си делать. Впрочем, как вариант, можно транспонировать твой кошмар и можно будет использовать стандартные sql агрегаты и считать статистику из строк, а не из колонок. Проще будет немного. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 17:50 |
|
|
start [/forum/topic.php?fid=54&msg=39208658&tid=2008606]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 153ms |
0 / 0 |