I dag jeg spilte for å optimalisere en langsom SQL forespørselstype

SELECT * FROM 'table' WHERE `field` LIKE '%word%'

Hvor er den plagsom ett øyeblikk her – de siste del ord % ‘ %’ og i enda større concreteness tegn % før ordet, for at vi gjør. Jokertegn % ,før noen verdi, vårt program oversettes direkte direkte til en langsom, fordi på denne måten programmet stopper oss å bruke indeksene av den. Som alltid finnes det løsninger, men er ikke alltid klart 😆 generelt MySQL du har en løsning på problemet med fulltekst-søk Indeksering av den. Hvordan er det feltet det er mye skrevet i dokumentasjonen, men i hast vil jeg beskrive hvordan jeg endre topp forespørselen, fordi vi vil få litt drama endelig. Utgjør en søt som gjelder for fulltext feltet, spørringen må endres i skjemaet:

SELECT * FROM `table` WHERE MATCH (field) AGAINST ('word')

Så er åpenbare, og det er ikke nødvendig for unødvendig diskusjon. Det over spørsmål trer i kraft, Hvis ordet, som du gjør en forespørsel minst 4 symbolet, Dette er standardverdien, Hvis du vil endre den, må du angi verdien, която желаете в my.cnf в частта [mysqld] med erklæringen ft_min_word_len= 3 eller 2, 1 не е добър избор очевидно 😉 . Når du endrer verdien og starte mysql server-behov for å gjøre en reparasjon av tabeller, for at nye indekseringen trer i kraft. Her alt klart: du vil endre, Jeg restarte, rebildvam indekser og gjøre min forespørsel og returnerer 0 Sjekke linje med 😀

SHOW VARIABLES

Jeg ser at verdiene, Jeg har spurt har trådte i kraft, rebildvam indekser igjen – samme resultat. 🙄 Hat, veldig ubehagelig. ОТ ТУК НАТАТЪК ЗАПОЧНА ЕДНО ГОЛЯМО РУГАЕНЕ И РОВЕНЕ ЗА КЛЮЧА ЗА БАРАКАТА 😀 КОЙТО СЕ ОКАЗА ДОСТА, ДОСТА ИНТЕРЕСЕН. КАТО ЦЯЛО, КАТО ЗАПОЧНАХ ДА ЧЕТА ДОКУМЕНТАЦИЯТА ЗА НЕ ЗНАМ КОЙ ПЪТ И СТИГНАХ ДО ЕДИН ИНТЕРЕСЕН ПАСАЖ

Such a technique works best with large collections (faktisk, Det var finjusteres slik). For svært små tabeller, ordet distribusjon ikke gjenspeiler deres semantiske verdi, og denne modellen kan noen ganger gi bisarre resultater. For eksempel, Selv om ordet "MySQL" finnes i hver rad i tabellen artikler vist tidligere, et søk etter ordet gir ingen resultater

ГРЕДА 😳 Дам табличката ми беше малка – Det var fortsatt en test. I en stor program Naših tabell med over 2 000 000 orden og ting er sover. Vel er det allerede klart problemet. Å gjøre det klart løsningen, Jeg vil nevne kort, som full tekst søk støtter 3 Avansert modus BOOLSK , UTTRYKK og NATURLIG SPRÅK som siste verk som standard. Om de ulike modiene kan du sjekke dokumentasjonen, Jeg skal forklare med 2-3 ord til boolsk fordi det er nøkkelen. Den støtter logiske operatorer av type og, ELLER , IKKE og så videre, og kan gjøre noe magisk med søkeordene, å ha en, er det en annen, etc.. Støtter og symbol *, som tilsvarer jokertegn % 😉 Det er nyttig, Når søkeordet er lengden på den ft_min_word_len eller lille skuffer ;). Minst for meg ved bordet med om 100 linjen gjør en perfekt jobb. Eneste igjen å se og det ferdige programmet:

SELECT * FROM `table` WHERE MATCH (field)
AGAINST ('*word*' IN BOOLEAN MODE)

Nå kommer her en tid indeksering fungerer med oss jokertegn – Svaret er jeg ikke vet. Принципно мисля, че да, защото не е казано друго в документацията, но в документацията очевидно не се казват или показват много неща 😀

Forbedret lenker:

How PulseAudio works.

Image via Wikipedia

Днес най- накрая след една камара време реших да си купя още кабели за да си закача 5.1 аудио системата ми пълноценно. Досега я ползвах със нормален стерео кабел и след това системата сама си правеше деление на аудио каналите. Което не е никак добре. Сега вече за всеки канал си има отделен кабел и звукът е доста по чист (естествено), по плътен а на филмите усещането е подобрено много кратно. Имаше няколко малки драми които се оправят относителни интуитивно. Основната драма беше, че звукът тръгна само в front колоните без буфер център или задните след като пренастроих звуковата схема на Gnome да е 5.1 . В повечето плеъри имам опция за настройка в alsa часта за колко канално да е аудиото но има програми в които отсъствува такава възможност като да речем adobe flash player. Първоначалната ми идея беше просто да пренастроя .asoundrc като задам параметри да дублира звукът по всички каналирешение с което не се гордея защото не го обмислих изобщо. Конфигурацията тривиална :

pcm.!default {
type plug
slave.pcmsurround51
slave.channels 6
route_policy duplicate
}

С нея нещата си дойдоха на място докато не осъзнах че alsa може да обработва само по 1 процес и докато тои не приключи да я ползва друг не може. 😳 Неприятно но факт бях забравил времената в който слушаш или player или youtube и ако едното ти омръзне трябва да затвориш програмата, че да ползваш другата апликация. Което веднага ми подсказа къде е истинския корен на нещатаконфигурацията на pulseaudio сървъра. Pulseaudio е най грубо казано прокси сървър който обработва информацията между аудио хардуера и аудио софтуера който иска да го ползва. Система която с години се доказа много кратно. При нея конфигурацията се намира в /etc/pulse/daemon.conf. По подразбиране всичко е закоментирано с ; така че ако не сте праивли промени може направо смело да добавите следните редове накрая на файлът:

enable-lfe-remixing = yes

default-sample-rate = 48000
default-sample-channels = 6

Имената на опциите са очевидни задаваме стойноста на колко канално аудио ще сме малък тунинг на стандартния битрейт и разрешване на lfe ремиксирането. След това остава да рестартирате alsa и pulseaudio с

sudo /etc/init.d/alsa-utils restart && pulseaudio -k

От тук нататък за мен остана само а се наслаждавам на вече по доброто аудио.

edit: .asoundrc трябва да е със съдържание за да нямате проблеми със skype и някой други апликации

pcm.pulse {type pulse }
ctl.pulse { type pulse }

Forbedret lenker: