Все заметки с тэгом «MySQL»

Можно уточнить:
    1. Среда, 10 марта

      MySQL, удаление дубликатов

      Существует множество универсальных решений данной задачи, но в MySQL всё решается ещё проще:


      ALTER IGNORE TABLE my_table ADD UNIQUE INDEX(a, b);


    1. Пятница, 16 октября 2009

      Sypex Dumper 2 Beta

      Спустя три года и один день, обновилась, пожалуй, самая быстрая утилита-PHP-скрипт для резервного копирования и восстановления баз данных MySQL.

      Вкусности новой версии:
      - Работает в 7-8 раз быстрее старой версии (а она работала очень даже шустро).
      - «Умный» лёгкий дамп.
      - Разные стратегии восстановления.
      - Ещё более приятный интерфейс.
      - Корректное автоматическое продолжение работы при завершении по таймауту.
      - Сервисные функции MySQL в интерфейсе.
      - Можно сохранять задачи для быстрого запуска вручную или по крону.
      - Возможность автоматического удаления старых дампов.
      - Можно завершить, поставить на паузу.
      - Отзывчивый прогресс-бар.
      - API для прикручивания сторонней авторизации.

      Пробуем


    1. Вторник, 14 апреля 2009

      «Лёгкий» дамп MySQL

      Иногда, чтобы что-нибудь поотлаживать, требуется быстро получить структуру и 100—200 записей в каждой таблице из очень большой базы.

      Для MySQL это делается так:


      mysqldump mydatabase --where="true limit 100" | gzip > mydatabase.sql.gz


    1. Воскресенье, 15 марта 2009

      Нужно ли переходить с MyISAM на InnoDB?

      Чётко и понятно о плюсах и минусах MyISAM и InnoDB.

      Peter из компании Percona в переводе Владимира.

      Читаем


    1. Среда, 11 марта 2009

      Множественный UPDATE в MySQL

      Сразу предупреждаю, что эффективней использовать несколько «классических» запросов и, по возможности, транзакции (которые MyISAM не поддерживает). Так что… для общего развития:

      Способ №1



      UPDATE tbl_country SET price = CASE
      WHEN code = 1 THEN 123;
      WHEN code = 2 THEN 456;

      END
      WHERE code IN (1,2,…)



      Способ №2



      INSERT INTO tbl_country
      (code, price)
      VALUES
      (1, 123),
      (2, 456),

      ON DUPLICATE KEY UPDATE tbl_country.price = VALUES(price);


    1. Суббота, 7 марта 2009

      utf8_unicode_ci или utf8_general_ci?

      Какую таблицу из двух выбрать для своей базы данных в случае использования UTF?

      utf8_general_ci
      Убирает все акценты и приводит к верхнему регистру: ÀÁÅåāă = A, ü = U.
      Не очень точно отрабатывает при сортировках. Иногда полезно при поиске. Быстрее utf8_unicode_ci.

      Подходит для Русского. При использовании Белорусского и Украинского сортировка будет не верной.

      utf8_unicode_ci
      Довольно точно при сортировке и поиске. Например, ß (немецкий эсцет) будет при сортировке располагаться рядом с ss, как ему и положено. Медленнее utf8_general_ci.

      Замечательно подходит для Русского, Белорусского и Украинского.

      Итог
      Если проект исключительно русскоязычный и скорость поиска и сравнения критична — можно остановится на utf8_general_ci. Если же есть планы по поддержке большего количества языков — лучше использовать utf8_unicode_ci.

      Полные таблички utf8_unicode_ci и utf8_general_ci (там, кстати, и все остальные есть).


    1. Четверг, 5 марта 2009

      MySQL: выбрать новости с определёнными id соблюдая порядок

      Задача: выбрать новости с id = [2, 10, 3, 88, 23] соблюдая порядок.


      SELECT *
      FROM news
      WHERE id IN (2, 10, 3, 88, 23)
      ORDER BY FIELD (id, 2, 10, 3, 88, 23)


    1. Среда, 18 февраля 2009

      toggle для mysql

      Что только не придумают иногда программисты… Задача — изменить значение cron в таблице ml на противоположное. Код немного не SQL т.к., скорее всего, писался под Drupal:


      UPDATE {ml} SET cron = (SELECT if(cron = 0,"1","0")) WHERE yid = %d



      Хотя на самом деле можно проще, быстрее и понятней:


      UPDATE {ml} SET cron = !cron WHERE yid = %d


    1. Вторник, 10 февраля 2009

      MySQL, сложение и NULL

      Вчера столкнулся с интересной штукой при работе с MySQL:

      SELECT NULL + 13


      даст нам NULL.

      Чтобы получилось ожидаемое (по крайней мере я почему-то ожидал) 13:


      SELECT IFNULL(NULL, 0) + 13



      IFNULL возвращает то, что передано вторым параметром, если первый равен NULL.

      Вместо NULL, как вы наверное догадались, было поле типа INT.


    1. Пятница, 19 декабря 2008

      MySQL: добавить если ещё нет

      Иногда требуется вставить запись в таблицу, если её там до сих пор нет. Можно сделать пару запросов: одним —проверить, другим — вставить, а можно и одним:

      INSERT IGNORE INTO `users`
      SET `login` = 'samdark', `password` = 'mypassword';



      Поле `login` должно быть уникальным.


  1. 1
  2. 2
  3. Последняя

Подписаться на RSS

Интересное

Разделы

  1. (5)
  2. (11)
  3. (6)
  4. (9)
  5. (6)
  6. (6)
  7. (16)
  8. (59)
  9. (264)
  10. (51)
  11. (16)
  12. (12)
  13. (37)
  14. (5)
  15. (10)
  16. (14)
  17. (18)
  18. (12)
  19. (6)
  20. (8)
  21. (7)
  22. (29)
  23. (62)
  24. (18)
  25. (64)
  26. (5)
  27. (193)
  28. (56)
  29. (6)
  30. (18)
  31. (72)
  32. (27)
  33. (65)
  34. (32)
  35. (10)
  36. (5)
  37. (6)
  38. (5)
  39. (309)
  40. (11)
  41. (6)
  42. (12)
  43. (8)
  44. (18)
  45. (6)
  46. (15)
  47. (114)
  48. (18)
  49. (6)
  50. (8)
  51. (66)
  52. (16)
  53. (6)
  54. (17)
  55. (5)
  56. (26)
  57. (7)
  58. (27)
  59. (7)
  60. (12)
  61. (11)
  62. (118)
  63. (31)
  64. (5)
  65. (18)
  66. (22)
  67. (9)
  68. (6)
  69. (8)
  70. (41)
  71. (10)
  72. (6)
  73. (12)
  74. (8)
  75. (5)

Друзья