Archive

You are currently browsing the archives for the MySQL category.

Янв

16

MySQL - полезные запросы

By masster

Речь пойдет о довольно часто встречающихся запросах, которые могут пригодиться в реальной жизни.
1. Имеется таблица, описывающая простое дерево:

CREATE TABLE tree(
IDItem INT AUTO_INCREMENT PRIMARY KEY,
Item VARCHAR(20) NOT NULL,
IDParent INT DEFAULT NULL);

Необходимо составить запрос, который выдал бы все листья этого дерева (т.е. т.е. записи, у которых нет потомков):

Решение:

SELECT table1.Item FROM
tree AS table1 LEFT JOIN tree as table2
ON table1.IDItem = table2.IDParent
WHERE table2.IDItem IS NULL;

Гранд идея такого запроса - листья не являются родителями для других записей.

2. Вы хотите одно из полей сделать уникальным, но система выдает сообщение об ошибке. Очевидно, в таблице имеются строки с одинаковыми значениями этого поля. Следующий запрос поможет найти повторяющиеся поля.

Решение:

SELECT name, count(name) as n1
FORM table
GROUP BY name
HAVING n1 > 1

3. Другая задача - удалить повторяющиеся записи в таблице. Такие записи могли возникнуть, если скрипт работает не совсем так, как вы задумывали. Обнаружив дыру и заделав ее, вам надо удалить несколько тысяч повторов. Предыдущий запрос лишь покажет наличие таких записей, но не удалит их.
Итак, пусть есть таблица, в которой первичный ключ автоинкрементный, и существуют повторы, скажем по полям IDProduct и IDCategory

ID IDProduct IDCategory
1 12 5
2 34 6
3 12 5

CREATE TABLE ProdCat (
ID int(11) NOT NULL auto_increment,
IDProduct int,
IDCategory int,
PRIMARY KEY (ID)
);

Решение:

ALTER IGNORE TABLE ProdCat ADD UNIQUE INDEX(IDProduct,IDCategory);

Идея запроса проста - составив новый индекс из двух полей, по которым есть повторы, и сделав его уникальным, мы получим выборку - туже таблицу, но только без повторяющихся записей.

P.S. Перед проведением этой операции лучше сделать бэкап таблицы

Ноя

12

Оптимизируем WordPress

By masster

В данном случае под оптимизацией я понимаю увеличение производительности сайта.
1. Проверяем соединение с сервером. Команда traceit имя_сайта даст ответ на вопрос, как быстро приходят пакеты от сревера. Ответ высвечивается в милисекундах.

2. Проверяем операционную систему - если Vista, то тормоза при загрузке некоторых сайтов вполне возможны. Чтобы ускорить процесс - читаем рецепт.

3. Проверяем плагины - некоторые могут сильно замедлить работу движка WordPress. По очереди отключаем их и смотрим за скоростью загрузки. Если замечаем притормааживание, можно попыпататься найти другой с таким же функционалом.

4. Еще одна засада может таиться в самой теме, которую Вы используете. Некотoрые темы в погоне за эффектами грузят тонны JavaScript. Также следует  проверить картинки - не всегда JPEG дает наименьший размер, можно попробовать PNG-8 или PNG-24, либо GIF.  Профилировать тему по скорости загрузке лучше всего с помощью классического отладчика для FireFox - Firebug.

5.  Проведите оптимизацию базы данных (можно с помощью WP-DBManager 2.31)

6. Можно отключить POST Revision, включенную начиная с версии 2.6. Для этого в wp-config.php меняем строчку на

define(’WP_POST_REVISIONS’, false);

7. Кэширование може тв сотни раз увеличить скорость работы сайта - результаты запросов к базе данных сохранятются в специальном файле. Если у вас нет root доступа к базе данных, то можно воспользоваться плагином - WP Super Cache.

8. Проверьте ping list (Settings->Writing). Уменьшите  список сайтов, которые пингует ваш сайт, и все может очень даже ускориться.

По материалам статьи 10 Best Tips for WordPress Optimization