|
|
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Есть sql-запрос: Код: plsql 1. 2. 3. 4. 5. Суть в чем, нужно выбрать только те uid которые заходили на сайт в течение 21 дня и более. Все в принципе выбирается и работает, но запрос выполняется примерно пол секунды(что долго, ибо на странице до десятка подобных запросов с разными датами и условиями). Ребят, как смог, так и оптимизировал, но чувствую, что можно как то еще. Не слишком силен в БД поэтому пишу здесь. p.s. на ip и uid в таблице стоят индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 09:10:33 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
если хотите помощи в оптимизации, то необходимо выложить SHOW CREATE TABLE (DDL) всех участвующих таблиц, EXPLAIN запроса и тд и тп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 09:20:40 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
aramanuid которые заходили на сайт в течение 21 дня и более Поясните эту фразу - её можно интерпретировать минимум тремя разными способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 09:37:27 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Прикладываю файлы и схему: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 09:37:37 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Akinaaramanuid которые заходили на сайт в течение 21 дня и более Поясните эту фразу - её можно интерпретировать минимум тремя разными способами. Пользователь зашел сегодня, вчера и например 2 месяца спустя. А если он зашел только сегодня и вчера - его не нужно показывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 09:38:30 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
То есть только те, кто заходил хотя бы один раз за последние 21 день, и хотя бы один раз ранее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 09:41:55 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
araman, "заходили на сайт в течение 21 дня и более." - это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 10:02:22 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
если `created_at` у вас дата посещения - то в подзапросе при Group By покажет произвольную дату (использовать либо MAX... либо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 10:21:03 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Akina хотя бы один раз ранее. MasterZiv см. выше Alex_Ustinov не понял, можно более подробно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 10:32:28 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
пример с данными и желаемым рез-том приведите, типа посещал тогда-то надо получить то-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 10:58:47 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
Уточняю: Интервал между первым и последним заходом пользователя от 21 дня. Т.е. если пользователь заходил к примеру: 01.03.2015 15.03.2015 26..03.2015 он попадает в выборку. А если: 10.03.2015 25.03.2015 тогда он не попадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:21:56 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
aramanПользователь зашел сегодня, вчера и например 2 месяца спустя. А если он зашел только сегодня и вчера - его не нужно показывать. Может быть "два месяца назад" ? В общем, ты сначала с русским языком разберись, это -- средние классы школы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:26:25 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
araman, ну так Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:28:22 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Для начала на Вы. Не может быть, читайте внимательно вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:32:36 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
araman , ты сначала с логикой запроса разрерись (после русского языка, разумеется). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Таблица stats сгруппированная дважды по одному и тому же условию, JOIN-иться сама с собой. Вопрос -- зачем ? Очевидно, что подзапрос можно просто выкинуть, и будет то же самое (тот же самый бред, ну да ладно -- всё равно тот же самый). Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:37:48 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
tangliraraman, ну так Код: sql 1. 2. 3. 4. 5. А как вы кол-во будете считать в таком случае? Да и запрос выполняется тоже 0.5 секунды. В моем примере он еще выдает общее кол-во заходов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:38:58 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Если выкинуть подзапрос то тогда не посчитать корректно кол-во заходов. Согласен что бред само на себя джойнить, но иначе я не придумал, поэтому и обратился сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:41:37 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
авторСуть в чем, нужно выбрать только те uid которые заходили на сайт в течение 21 дня и более. Все в принципе выбирается и работает, но запрос выполняется примерно пол секунды(что долго, ибо на странице до десятка подобных запросов с разными датами и условиями). Ну и могу естественно предложить самый простой и действенный способо оптимизации такой фигни -- предвычисление. В момент захода пользователя на сайт нужно предварительно вычислять список этих самых пользователей. Естественно, в момент захода он корректируется только -- один пользователь выбывает из списка, другой -- добавляется. Ну и естественно можно показывать прост произвольных N пользователей на странице -- последних, кто заходили, или просто тупо произвольно брать 10-20 -- всю эту веб-хрень всё равно никто никогда не проверяет и она 200 раз никому не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:42:36 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Если вас не затруднит, прочтите еще раз сообщение 17439157 У меня такое ощущение что вы не до конца поняли задачу, а пытаетесь тут умничать и "тыкать". Ничего лично ессно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:45:22 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
aramanУточняю: Интервал между первым и последним заходом пользователя от 21 дня. Т.е. если пользователь заходил к примеру: 01.03.2015 15.03.2015 26..03.2015 он попадает в выборку. А если: 10.03.2015 25.03.2015 тогда он не попадает. Чё тогда проще вообще? Храни в таблице пользователей дату первого захода пользователя (создания?) и последнего захода пользователя. И автоматом из этого можно вычислить признак, нужно ли его показывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:46:16 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
aramanMasterZiv, Если вас не затруднит, прочтите еще раз сообщение 17439157 У меня такое ощущение что вы не до конца поняли задачу, а пытаетесь тут умничать и "тыкать". Ничего лично ессно. Безусловно, я с трудом понимаю тот бред, который ты тут несёшь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:47:02 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
araman, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Где ключи или хотя бы один индекс ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:48:46 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Простите, а это что по вашему: Код: sql 1. только дайте конкретный ответ без холивара про бред и прочее. Либо научитесь вести конструктивный диалог, раз мой русский хромает с ваших слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:51:21 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Как я вижу в 1 посте я про это упомянул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:51:58 |
|
||
|
Помогите оптимизировать запрос
|
|||
|---|---|---|---|
|
#18+
aramanMasterZiv, Как я вижу в 1 посте я про это упомянул. Так надо не упоминать, а дать вывод Код: sql 1. Индексы бывают разные, и то, что ты считаешь под "в таблице стоят индексы", может означать всё, что угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2015, 11:55:03 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38918707&tid=1833367]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
80ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 420ms |

| 0 / 0 |
