Új hozzászólás Aktív témák
-
Jester01
veterán
válasz vakondka #246 üzenetére
Pl. saját magával összejoinolod a táblát, vhogy így:
select t1.products_id, t1.language_id from products_description t1 left join products_description t2 on t1.products_id = t2.products_id and t2.language_id = 4 and t1.language_id = 1 where t2.language_id is null
Most éppen nem jutok be mysqles gépre de talán jóJester
-
Jester01
veterán
válasz vakondka #250 üzenetére
Itt a javított verzió, most van mysqlem ki is tudtam próbálni:
select t1.products_id, t1.language_id from products_description t1 left join products_description t2 on t1.products_id = t2.products_id and t2.language_id = 4 where t1.language_id = 1 and t2.language_id is null
(A t1.language_id = 1 feltétel a join helyett a where részbe kell.)Jester
-
Jester01
veterán
válasz vakondka #252 üzenetére
Jah, most meg fordítva van (azokat listázta amik angolul vannak csak)
A 4est és az 1est cseréld meg.
select count(*) from products_description t1 left join products_description t2 on t1.products_id = t2.products_id and t2.language_id = 1 where t1.language_id = 4 and t2.language_id is null;
+----------+
| count(*) |
+----------+
| 1618 |
+----------+Jester
-
Jester01
veterán
Foreign key arra jó, hogy eleve a táblaszerkezet leírásában rögzíted a viszonyt. Ekkor az adatbáziskezelő ezt ellenőrizni fogja és nem enged olyan módosításokat amelyek ezt a szabályt megsértenék. De lekérdezéskor ettől függetlenül a L3zl13 által mutatott join-t kell alkalmazni.
Jester
-
Jester01
veterán
válasz VladimirR #305 üzenetére
delete from posts where topicid not in (<halmaz>)
Szerintem semmi baj nincs ezzel a megoldással. Gondolom a <halmaz> egy al-select, jelen esetben tehát valami ilyesmi lesz a parancs:
delete from posts where topicid not in (select topicid from topics)
Alternatív módszer:
delete from posts where not exists (select * from topics where topics.topicid = posts.topicid)
Az explain parancs által adott infók alapján nekem úgy tûnik, hogy az elsõ a gyorsabb. Ha van index a topics.topic_id mezõre, akkor azt mind a két verzió kihasználja.Jester
-
Jester01
veterán
-
Jester01
veterán
válasz VladimirR #311 üzenetére
egy up a kesonkeloknek
mi a kulonbseg a varchar es a text adattipuxok kozott
varchar -nak a rekordban van foglalva hely (a maximális hossznak), text esetén csak a hossza és egy pointer van eltárolva. Ez utóbbi egy külön területre mutat. A text ezért lassabb, de kevesebb helyet foglal.
mi az az index prefix length
Az index csak ennyi karaktert használ. Az olyan értékeket amik ezen hosszig megegyeznek azonosnak tekinti. A lekérdezéskor a látszólag egyező értékekre még egy szűrés fut.
mi a kulonbseg szoveges (varchar, text) mezo eseteben a sima index es a fulltext index kozott?
Fulltext indexben mindenféle vicces módon lehet keresni (MATCH ... AGAINST), sima indexben csak összehasonlítás van (kisebb-nagyobb-egyenlő).
hogy jobb index-et kesziteni? melyiknek mik az elonyei, hatranyai?
-a) alter table tablanev add index ( mezo1, mezo2 );
-b) alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );
Ez a két eset nem ekvivalens. Az első esetben mezo2-re nincs index (ha az adott adatbáziskezelő jobbról használja az összetett indexeket - ellenkező esetben mezo1-re nem lesz index). Ha mindig mind a két mezőre van szűrés, akkor az első módszer jobb lesz. Ha viszont a két mezőre külön-külön is akarsz keresni akkor a másodikra van szükséged. Plusz ha UNIQUE feltételed is van, akkor az első esetben a (mezo1, mezo2) pároknak kell egyedinek lenni, míg a másodikban a mezo1 és mezo2 értékeknek külön-külön.
MOD: szóval az összetett indexet (az adatbáziskezelőtől függően jobbról vagy balról) tetszőleges hosszig lehet használni. Pl. a (mezo1, mezo2, mezo3) indexet lehet (mezo1), (mezo1, mezo2), (mezo1, mezo2, mezo3) indexként is használni.
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
Ránézésre nincs (feltéve, hogy van index mind a 2 lekérdezéshez). De az első a biztosabb.
Ha valahol hülyeséget írtam, javítsatok ki
[Szerkesztve]
[Szerkesztve]Jester
-
Jester01
veterán
válasz VladimirR #318 üzenetére
A biztosabbat úgy értettem, hogy így csak kisebb mértékben bízod a query optimizer-re a döntést. A két egyszerû lekérdezésnél (RedAnt javaslatával) valószínû, hogy 2 index lookup lesz az egész. Elvileg az optimizer is ezt adja és úgy megtakaríthatsz egy parancsfeldolgozást. Persze csak ha bízol benne
Ami a varchar-t illeti valóban igazad van. Mondjuk egy ilyen utalást találtam azért a leírásban: ''Remember that MySQL may treat VARCHAR columns as if they're CHAR columns, in which case the fixed format is used.'' De fogalmam sincs mire céloz.Jester
-
Jester01
veterán
válasz VladimirR #365 üzenetére
A mező collation legyen BINARY. Ha ez még mindig nem elég, akkor add be hexában.
mysql> create table t(hash char(20) BINARY);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t values (0xC3A9);
Query OK, 1 row affected (0.00 sec)
mysql> select hex(hash) from t;
+-----------+
| hex(hash) |
+-----------+
| C3A9 |
+-----------+
1 row in set (0.00 sec)Jester
-
Jester01
veterán
-
Jester01
veterán
Ugye a curdate()-t nem tetted aposztrófok közé?
SELECT * FROM tdc_lc_lot_info where order_no like 'TDC%' and Create_Time < date_sub (curdate(),interval 10 DAY);
-vagy-
SELECT * FROM tdc_lc_lot_info where order_no like 'TDC%' and DATEDIFF(curdate(), Create_Time) > 10;
[ Szerkesztve ]
Jester
-
Jester01
veterán
Egyszerűen felrakod a D-re a mysql-t. A kliens pediglen hálózaton vagy pipe-on keresztül kapcsolódik majd a futó adatbázis szerverhez (ezt a kliensben kell beállítani). Vagyis nem a fájlokhoz fér hozzá. Tök mindegy milyen meghajtón vannak, mert a mysql szerver szolgáltatásnak kell futnia.
Ha el akarod különíteni a mysql szervert és az adat fájlokat is, akkor ezt a mysql-nek kell beállítani. Windowson nem tudom hogy megy ez (gondolom kattintani kell valahol ), linuxon a my.cnf-ben van egy datadir változó.
Jester
-
Új hozzászólás Aktív témák
- WoW avagy World of Warcraft -=MMORPG=-
- Házimozi haladó szinten
- Milyen TV-t vegyek?
- Honda topik
- No Voice in the Galaxy
- gban: Ingyen kellene, de tegnapra
- KERÉKPÁR / BRINGA / ALKATRÉSZ beárazás
- Call of Duty: Modern Warfare III (2023)
- VR topik (Oculus Rift, stb.)
- Poco X6 Pro - ötös alá
- További aktív témák...