środa, 19 października 2011

Pobranie struktury indeksów przy pomocy SQL

Ingres:
SELECT iii.*, iic.* FROM iiindexes iii JOIN iiindex_columns iic ON (iii.index_name = iic.index_name)
    ORDER BY iii.index_name
Informix:
SELECT st.tabname, sc.colname, sc.colno, si.idxtype, si.*, st.*, sc.*
    FROM sysindexes si JOIN systables st ON (si.tabid = st.tabid) JOIN syscolumns sc ON (sc.tabid = st.tabid)
Oracle:
SELECT * FROM user_ind_columns
PostgreSQL:
SELECT i.relname, a.attname, t.*, i.*, ix.*, a.* FROM pg_class t, pg_class i, pg_index ix, pg_attribute a
    WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND a.attnum = ANY(ix.indkey)
Usunięcie wszystkich indeksów z danej relacji na PostgreSQL:
CREATE OR REPLACE FUNCTION drop_all_indexes_on_table (table_name VARCHAR) RETURNS void
AS $$
DECLARE
 c_indexes FOR SELECT
     DISTINCT i.relname AS index_name
    FROM
     pg_class t, pg_class i, pg_index ix, pg_attribute a
    WHERE
     t.oid = ix.indrelid
     AND i.oid = ix.indexrelid
     AND a.attrelid = t.oid
     AND a.attnum = ANY(ix.indkey)
     AND t.relkind = 'r'
     AND ix.indisprimary != 't'
     AND t.relname = 'table_name'
BEGIN
 FOR index_entry IN c_indexes LOOP
  DROP INDEX index_entry;
 END LOOP;
END
$$ LANGUAGE PLPGSQL;

Ingres SQL Explain QEP

Aby wykonać zapytanie i otrzymać jego plan należy utworzyć plik tekstowy qep.sql:
SET QEP;
\p\g
SET OPTIMIZEONLY;
\p\g
SELECT ...
\p\g
Uruchomienie w/w skryptu:
sql {nazwa_bazy} < qep.sql > sql-explain.txt
W pliku sql-explain.txt znajduje się plan zapytania.

Uwagi:
QEP - włącza wyświetlanie planu zapytania
OPTIMIZEONLY - jeśli jest ustawione, to zapytanie nie jest wykonywane (jest generowany tylko plan zapytania)

piątek, 7 października 2011

poniedziałek, 26 września 2011

Sprawdzenie wersji pliku *.class

Używamy polecenia:
javap -verbose MyClass


I w wyniku szukamy:
minor version: 0
major version: 50


A wynik odczytujemy:
major  minor Java platform version 
 45      3           1.0
 45      3           1.1
 46      0           1.2
 47      0           1.3
 48      0           1.4
 49      0           1.5
 50      0           1.6
 51      0           1.7
 52      0           1.8

źródło

czwartek, 1 września 2011

sort

Sposoby sortowania w komendzie sort.

1 echo -e "d\nD\nc\nb\nB\na" | sort
2 echo -e "d\nD\nc\nb\nB\na" | sort --ignore-case
3 echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort
4 echo -e "d\nD\nc\nb\nB\na" | LC_COLLATE=C sort --ignore-case

Da wyniki:

1 2 3 4
- - - -
a a B a
b b D B
B B a b
c c b c
d d c D
D D d d

źródło