Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по партициям PARTITION и глючным запросам / 3 сообщений из 3, страница 1 из 1
20.11.2018, 09:08
    #39735417
ffreest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по партициям PARTITION и глючным запросам
mysql 5.5.60

Начну из далека..

В общем есть у меня сайт с большим онлайном по недвижке.

Есть таблица объявлений c 2 млн строчек с, там обновления из разных регионом россии. Чтоб решить проблему медленных запросов пришлось сделать партицивание.

ALTER TABLE hi_materials PARTITION BY LIST (`region`) (
PARTITION p0 VALUES IN (0),
PARTITION p1 VALUES IN (1),
PARTITION p2 VALUES IN (2),
PARTITION p3 VALUES IN (3),
PARTITION p4 VALUES IN (4),
PARTITION p5 VALUES IN (5),
PARTITION p6 VALUES IN (6),
PARTITION p7 VALUES IN (7),
PARTITION p8 VALUES IN (8),
PARTITION p9 VALUES IN (9),
PARTITION p10 VALUES IN (10),
PARTITION p11 VALUES IN (11),
PARTITION p12 VALUES IN (12),
PARTITION p13 VALUES IN (13),
PARTITION p14 VALUES IN (14),
PARTITION p15 VALUES IN (15),
PARTITION p16 VALUES IN (16),
PARTITION p17 VALUES IN (17),
PARTITION p18 VALUES IN (18),
PARTITION p19 VALUES IN (19),
PARTITION p20 VALUES IN (20),
PARTITION p21 VALUES IN (21),
PARTITION p22 VALUES IN (22),
PARTITION p23 VALUES IN (23),
PARTITION p24 VALUES IN (24),
PARTITION p25 VALUES IN (25),
PARTITION p26 VALUES IN (26),
PARTITION p27 VALUES IN (27),
PARTITION p28 VALUES IN (28),
PARTITION p29 VALUES IN (29),
PARTITION p30 VALUES IN (30),
PARTITION p31 VALUES IN (31),
PARTITION p32 VALUES IN (32),
PARTITION p33 VALUES IN (33),
PARTITION p34 VALUES IN (34),
PARTITION p35 VALUES IN (35),
PARTITION p36 VALUES IN (36),
PARTITION p37 VALUES IN (37),
PARTITION p38 VALUES IN (38),
PARTITION p39 VALUES IN (39),
PARTITION p40 VALUES IN (40),
PARTITION p41 VALUES IN (41),
PARTITION p42 VALUES IN (42),
PARTITION p43 VALUES IN (43),
PARTITION p44 VALUES IN (44),
PARTITION p45 VALUES IN (45),
PARTITION p46 VALUES IN (46),
PARTITION p47 VALUES IN (47),
PARTITION p48 VALUES IN (48),
PARTITION p49 VALUES IN (49),
PARTITION p50 VALUES IN (50),
PARTITION p51 VALUES IN (51),
PARTITION p52 VALUES IN (52),
PARTITION p53 VALUES IN (53),
PARTITION p54 VALUES IN (54),
PARTITION p55 VALUES IN (55),
PARTITION p56 VALUES IN (56),
PARTITION p57 VALUES IN (57),
PARTITION p58 VALUES IN (58),
PARTITION p59 VALUES IN (59),
PARTITION p60 VALUES IN (60),
PARTITION p61 VALUES IN (61),
PARTITION p62 VALUES IN (62),
PARTITION p63 VALUES IN (63),
PARTITION p64 VALUES IN (64),
PARTITION p65 VALUES IN (65),
PARTITION p66 VALUES IN (66),
PARTITION p67 VALUES IN (67),
PARTITION p68 VALUES IN (68),
PARTITION p69 VALUES IN (69),
PARTITION p70 VALUES IN (70),
PARTITION p71 VALUES IN (71),
PARTITION p72 VALUES IN (72),
PARTITION p73 VALUES IN (73),
PARTITION p74 VALUES IN (74),
PARTITION p75 VALUES IN (75),
PARTITION p76 VALUES IN (76),
PARTITION p77 VALUES IN (77),
PARTITION p78 VALUES IN (78),
PARTITION p79 VALUES IN (79),
PARTITION p80 VALUES IN (80),
PARTITION p81 VALUES IN (81),
PARTITION p82 VALUES IN (82),
PARTITION p83 VALUES IN (83),
PARTITION p84 VALUES IN (84),
PARTITION p85 VALUES IN (85),
PARTITION p86 VALUES IN (86),
PARTITION p87 VALUES IN (87),
PARTITION p88 VALUES IN (88),
PARTITION p89 VALUES IN (89),
PARTITION p90 VALUES IN (90),
PARTITION p91 VALUES IN (91),
PARTITION p92 VALUES IN (92),
PARTITION p93 VALUES IN (93),
PARTITION p94 VALUES IN (94),
PARTITION p95 VALUES IN (95),
PARTITION p96 VALUES IN (96),
PARTITION p97 VALUES IN (97),
PARTITION p98 VALUES IN (98),
PARTITION p99 VALUES IN (99),
PARTITION p100 VALUES IN (100)
);

Проблема решилась, не которые запросы выдают 0 результатов, если вместо LIKE используется =

SELECT COUNT(*) FROM hi_materials FORCE INDEX ( `type`, `user` ) WHERE `type` = "11" AND `approve` = "1" AND `status` = "1" AND `user` = "2742320"

так 0

А вот так

SELECT COUNT(*) FROM hi_materials FORCE INDEX ( `type`, `user` ) WHERE `type` = "11" AND `approve` = "1" AND `status` = "1" AND `user` LIKE "2742320"

результат 129

Аналогино

SELECT * FROM hi_materials WHERE `type` = "11" AND `approve` = "1" AND `status` = "1" AND `user` = "2742320" ORDER BY `date_updated` DESC LIMIT 0, 10

так 0

SELECT * FROM hi_materials FORCE INDEX ( `type`, `user` ) WHERE `type` = "11" AND `approve` = "1" AND `status` = "1" AND `user` LIKE "2742320" ORDER BY `date_updated` DESC LIMIT 0, 10

10 выводит

Если партицирование удалить

ALTER TABLE hi_materials REMOVE PARTITIONING;

То выше приведенные запросы работают одинаково и выдают как положено результаты. А еще в старой версии mysql 5.1 таких проблем не было 100%
...
Рейтинг: 0 / 0
20.11.2018, 10:21
    #39735451
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по партициям PARTITION и глючным запросам
ffreest,

Строковые литералы другими кавычками обрамляются. А числовые вообще без кавычек пишутся.
...
Рейтинг: 0 / 0
20.11.2018, 10:34
    #39735467
ffreest
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по партициям PARTITION и глючным запросам
Я пробовал `user` = 2742320 без радницы поле `user` INT
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по партициям PARTITION и глючным запросам / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]