Re: ADD FOREIGN KEY (was Re: [GENERAL] 7.4Beta)
От | Hannu Krosing |
---|---|
Тема | Re: ADD FOREIGN KEY (was Re: [GENERAL] 7.4Beta) |
Дата | |
Msg-id | 1064838206.2645.5.camel@fuji.krosing.net обсуждение исходный текст |
Ответ на | Re: ADD FOREIGN KEY (was Re: [GENERAL] 7.4Beta) (Shridhar Daithankar <shridhar_daithankar@persistent.co.in>) |
Список | pgsql-hackers |
Shridhar Daithankar kirjutas E, 29.09.2003 kell 13:34: > On Monday 29 September 2003 15:58, Christopher Kings-Lynne wrote: > > >>So a db designer made a bloody mistake. > > >>The problem is there's no easy way to find out what's missing. > > >>I'd really like EXPLAIN to display all subsequent triggered queries > > >>also, to see the full scans caused by missing indexes. > > > > > > It could probably be doable for EXPLAIN ANALYZE (by actually tracing > > > execution), but then you will see really _all_ queries, i.e. for a 1000 > > > row update you would see 1 UPDATE query and 1000 fk checks ... > > > > > > OTOH, you probably can get that already from logs with right logging > > > parameters. > > > > Actually - it shouldn't be too hard to write a query that returns all > > unindexed foreign keys, surely? > > Correct me if I am wrong but I remember postgresql throwing error that foreign > key field was not unique in foreign table. Obviously it can not detect that > without an index. Either primary key or unique constraint would need an > index. > > What am I missing here? > > > IOW, how do I exactly create foreign keys without an index? hannu=# create table pkt(i int primary key); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index 'pkt_pkey' for table 'pkt' CREATE TABLE hannu=# create table fkt(j int references pkt); NOTICE: CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s) CREATE TABLE hannu=# now the *foreygn key* column (fkt.j) is without index. As foreign keys are enforced both ways, this can be a problem when changing table pkt or bulk creating FK's on big tables. ---------------- Hannu
В списке pgsql-hackers по дате отправления: