[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    В БД необходимо вставить 1 000 000 записей.
    Как более рациональнее это сделать? Сколько записей добавлять через один запрос?
     
  2. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    (1000000 / 800) , 800 - вставок за 1 присест [ INSERT INTO (... ...) VALUES (... ...), (... ...), .... ] = 1250 запросов

    максимальный размер вставки зависит от параметра max_allowed_packet в конфиге my.cnf в секции [mysqld]

    так же возможна промежуточная вставка по крону каждые 3 минкты, проверяет Дельта индекс позиции прошлого сканирования по PRIMARY KEY id и запись данных из диапазона BETWEEN
     
    #1362 PandoraBox, 30 Mar 2011
    Last edited: 30 Mar 2011
  3. Zaya

    Zaya Banned

    Joined:
    24 May 2009
    Messages:
    30
    Likes Received:
    5
    Reputations:
    0
    есть бд мускуль. она хорошая и шебуршит на славный праздник йом кипур.
    есть доступ администратора. ось - фортки ХП. (на них и крутится мускуль)
    нужен пароль рута (я знаю, что его можно сменить, менять не нужно. я знаю, что можно достать и брутить хеш пароля - тоже не интересно).
    есть три активные софтинки, что работают с бд (прям на локалхосте).
    первая - левый дампер бд, вторая - странные гуи для администрирования бд. третяя - собственно, myadmin (не phpmyadmin, хотя и не важно)
    я вижу два принципиальных пути - ковыряние в переменных этих софтин, чтобы достать пвд рута (я посмотрел - там нету тривиальных конфигов) и снифинг локального трафика (всеравно коннект идет к локалхосту и на портах его, наверное, можно слушать). только сниффер посоветуйте для этого дела, а то гуглить надоело :(
    зы
    ага, и вам привет.
     
  4. #Smith

    #Smith New Member

    Joined:
    20 Jun 2010
    Messages:
    96
    Likes Received:
    2
    Reputations:
    0
    Приветствую!
    Хотел бы узнать принципиальную разницу между Char(n) и VarChar(n) в СУБД MySQL.
    Что было бы лучше использовать и почему?
     
  5. 0xJah

    0xJah New Member

    Joined:
    23 Feb 2011
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    http://www.google.ru/#q=разница+Char+И+VarChar
     
  6. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    База данных MySQL. Как сформулировать данный запрос:
    PHP:
    DELETE FROM `таблицаWHERE `поле1`='информация1'
    что б он выполнялся только если первый символ поля2 равен 1?
     
    #1366 randman, 6 Apr 2011
    Last edited: 6 Apr 2011
  7. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    DELETE FROM `таблица` WHERE `поле1` = 'информация1' AND ASCII(`поле2`) = 0x31;
    DELETE FROM `таблица` WHERE `поле1` = 'информация1' AND SUBSTR(`поле2`, 1, 1) = '1';
    DELETE FROM `таблица` WHERE `поле1` = 'информация1' AND `поле2` LIKE '1%';
    
     
    #1367 krypt3r, 6 Apr 2011
    Last edited: 6 Apr 2011
    1 person likes this.
  8. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Как выбрать из БД 2 записи случайным образом, но так чтобы эти записи не повторялись. Количество записей в БД неизвестно. Требуется сделать это только по средствам MySQL (Т.е. без помощи PHP и других языков)
     
  9. red_joker

    red_joker New Member

    Joined:
    4 Nov 2010
    Messages:
    31
    Likes Received:
    3
    Reputations:
    0
    Если выбирать так:
    PHP:
    SELECT FROM user ORDER BY RAND() LIMIT 2;
    то в рамках одного запроса 2 случайно выбранные записи повторяться не будут. Если нужно, чтобы они не повторялись и при следующем запросе - придется как-то хранить (временные таблицы) уже выбранные записи.
     
  10. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    2red_joker, не сойдет, это не "случайный" выбор
     
  11. red_joker

    red_joker New Member

    Joined:
    4 Nov 2010
    Messages:
    31
    Likes Received:
    3
    Reputations:
    0
    Ну если это по-твоему не случайный - пиши свой тру-генератор случайных чисел в хранимых, чо еще :)
    Или формулируй более точно задачу, не понятно тогда что ты имеешь ввиду под "случайным".
    ЗЫ. Пара хабра-статей про оптимизацию ORDER BY RAND():
    раз , два
     
  12. ZloiKombat

    ZloiKombat Banned

    Joined:
    16 Jan 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте.
    Помогите пожалуйста написать кусок кода, а именно проверку совпадений по ip + браузер.
    Есть таблица с записями такого вида

    id|log|brouzer|ip|xxx|xxx1|xxx2|

    1|maks|mozilla|111.22.33.444|xxx|xxx1|xxx2|
    2|maks|mozilla|111.22.33.444|xxx|xxx1|xxx2|
    3|lena|mozilla|777.22.33.444|xxx|xxx1|xxx2|
    4|tolyk|mozilla|122.22.33.444|xxx|xxx1|xxx2|
    5|lena|safary|122.22.33.444|xxx|xxx1|xxx2|
    6|vova|mozilla|777.22.33.444|xxx|xxx1|xxx2|
    7|vova|mozilla|111.22.33.444|xxx|xxx1|xxx2|
    8|maks|mozilla|111.22.33.444|xxx|xxx1|xxx2|
    9|maks|ie|111.22.33.555|xxx|xxx1|xxx2|
    10|maks|ie|111.22.33.444|xxx|xxx1|xxx2|

    То есть нужно вывести log у которых совпали ip и brouzer

    maks - vova
    lena - vova

    В таблице примерно 50,000 строк
     
  13. snet

    snet New Member

    Joined:
    19 Dec 2010
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    Есть sql:
    Code:
    SELECT 
     column1,
     sum(column2) as column2,
     sum(column3) as column3,
     sum(column4) as column4,
     sum(column5) as column5,
     sum(column6) as column6,
     sum(IF(z=6, column1, 0)) as unknown
    FROM table 
    WHERE 
     1 
     AND dt>=1299970800
     AND dt<=1302645600
     AND x IN (1)
     AND z IN (4)
    GROUP BY dt
    ORDER BY dt DESC
    У меня есть доступ к редактированию
    Code:
    AND z IN ( ЗДЕСЬ )
    ну т.е. sql иньекция
    Как мне вынуть какое-нибудь значение, например, версию mysql? простой "union select 1,2,3,4,5,6,7 -- " не помогает, выводит синтаксическую ошибку на то, что закоменчено:
    Code:
    MySQL Error - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY dt ORDER BY dt DESC' at line 5
    Проблема решена! Закоментил нулевым байтом.


    --------
     
    #1373 snet, 13 Apr 2011
    Last edited: 13 Apr 2011
  14. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Надо было скобочку закрыть и юнить уже потом
     
  15. snet

    snet New Member

    Joined:
    19 Dec 2010
    Messages:
    61
    Likes Received:
    2
    Reputations:
    0
    ну да я так и делал.
     
  16. kappa

    kappa New Member

    Joined:
    19 Jul 2010
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    А можно с помощью запроса вывести из поля text только часть текста?
    хочу для описания заметки реализовать
     
  17. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    SUBSTRING()
     
  18. kappa

    kappa New Member

    Joined:
    19 Jul 2010
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    Спасибо, но этот способ я знаю, он очень долго выводит., я думал что может есть аналогичный этому способу но только через SQL - запрос
    SELECT * FROM table WHERE (и погнал запрос на выборку в 3 предложения)
     
  19. #Smith

    #Smith New Member

    Joined:
    20 Jun 2010
    Messages:
    96
    Likes Received:
    2
    Reputations:
    0
    Доброго времени суток!
    Подскажите пожалуйста, как определить номер строки в таблице, если строки непронумироваеы.
    SELECT-ом я её нахожу. А как определить порядковый номер - не знаю.
    СУБД - MySQL
     
  20. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    делай выборку под другому параметру или юзай limit
    http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr
     
    _________________________
Thread Status:
Not open for further replies.